コレクション
コレクションは、チームのメンバーや会議でのトークなどの関連コンテンツをグループ化するのに最適な方法です。
セットアップ
コレクションを使用するには、まず_config.yml
で定義します。例として、staff membersのコレクションを作成します。
collections:
- staff_members
この場合、collections
は、各コレクションに追加のメタデータが定義されていないシーケンス(配列)として定義されます。
オプションでコレクションのメタデータを指定するには、collections
をシーケンスではなくマッピング(ハッシュマップ)として定義し、その中に追加のフィールドを定義します。
collections:
staff_members:
people: true
コレクションをシーケンスとして定義する場合、そのページはデフォルトではレンダリングされません。有効にするには、コレクションのマッピング定義でoutput:true
を指定する必要があります。詳細については、出力セクションを参照してください
コレクションをまとめる3.7.0
collections_dir: my_collections
で全てのコレクションをまとめるディレクトリを指定できます。
するとJekyllは、books
コレクションをmy_collections/_books
で、recipes
コレクションをmy_collections/_recipes
で見つけるようになります。
ドラフトとポストは必ずカスタムコレクションディレクトリに入れてください
collections_dir: my_collections
でコレクションをひとまとめにしたなら、_drafts
はmy_collections/_drafts
に、_posts
はmy_collections/_posts
に移動してください。コレクションディレクトリの名前はアンダースコア("_")で始められないことに注意してください。
コンテンツの追加
対応するフォルダ(<source>/_staff_members
など)を作成して、ドキュメントを追加します。front matterがある場合はfront matterが処理され、front matterより後の全部がドキュメントのcontent
とされます。front matterが無い場合は、Jekyllは静的ファイルとしてそれ以上コンテンツを処理しません。front matterがある場合は、Jekyllはファイルの内容を処理して期待される出力にします。
front matterが存在するかどうかに関係なく、Jekyllは、コレクションのメタデータにoutput: true
が設定されている場合にのみ、宛先ディレクトリ(例えば、_site
)に書き込みます。
上記で設定したコレクションにstaff memberを追加する方法の例です。ファイル名は./_staff_members/jane.md
で、内容は以下の通りです。
---
name: Jane Doe
position: Developer
---
Jane has worked on Jekyll for the past *five years*.
内部的にコレクションと見なされていますが、上記はpostsには適用されないことに注意してください。有効なファイル名形式の投稿は、front matterが含まれていない場合でも処理対象としてマークされます。 </ em>
ディレクトリは正しい名前にしてください
フォルダは_config.yml
ファイルで定義した名前で、前に_
を追加します。
出力
これでsite.staff_members
をページで繰り返し処理して、各staff memberの内容を出力できます。ポストと同様、ドキュメント本文にはcontent
変数を使用してアクセスします。
{% for staff_member in site.staff_members %}
<h2>{{ staff_member.name }} - {{ staff_member.position }}</h2>
<p>{{ staff_member.content | markdownify }}</p>
{% endfor %}
コレクションの各ページをJekyllで作成したい場合は、_config.yml
のコレクションのメタデータでoutput
キーをtrue
に設定します。
collections:
staff_members:
output: true
url
属性を使用して、ページにリンクを生成できます。
{% for staff_member in site.staff_members %}
<h2>
<a href="{{ staff_member.url }}">
{{ staff_member.name }} - {{ staff_member.position }}
</a>
</h2>
<p>{{ staff_member.content | markdownify }}</p>
{% endfor %}
パーマリンク
コレクション全体のURLの出力をコントロールするのに役立つ、特別なコレクションのパーマリンク変数があります。
ドキュメントのカスタムソート4.0
デフォルトでは、fromt matterにdate
キーがある場合はコレクション内のドキュメントはdate
でソートされます。ですが、date
キーがない場合はそれぞれのパスでソートされます。
コレクションのメタデータでソート順を制御することができます。
Front Matterキーでソート
ドキュメントはfront matterキーでソートすることができます。そのためには、メタデータのsort_by
にfront matterキーを指定します。tutorialsコレクションをlesson
キーでソートする例を、次に示します。
collections:
tutorials:
sort_by: lesson
ドキュメントはキーの値で昇順に並べられます。front matterキーが設定されていない場合は、そのドキュメントはソートの最後に配置されます。複数のドキュメントにfront matterキーが設定されていない場合は、設定されているドキュメントの後に、設定されていないドキュメントが日付やパスでソートされて配置されます。
ドキュメントの手動並び替え
order
メタデータにファイル名のリストを並べたい順に設定することで、好きな順序で配置できます。tutorialsコレクションの設定の例を、次に示します。
collections:
tutorials:
order:
- hello-world.md
- introduction.md
- basic-concepts.md
- advanced-concepts.md
リストにないファイル名のドキュメントは、指定されたものの後に配置されます。 サブカテゴリのドキュメントも、次のようにして含めることができます。
collections:
tutorials:
order:
- hello-world.md
- introduction.md
- concepts/basics.md
- concepts/advanced.md
どちらのメタデータキーも設定されている場合、order
のリストが優先されます。
Liquid属性
コレクション
コレクションは、site.collections
下に_config.yml
で指定したメタデータを付加することで使用できます。情報を以下に示します。
変数 | 説明 |
---|---|
|
コレクションの名前。 |
|
ドキュメントの配列。 |
|
コレクションの静的ファイルの配列。 |
|
コレクションのディレクトリへの、サイトからの相対パス。 |
|
コレクションのディレクトリへのフルパス。 |
|
コレクションのドキュメントを個別のファイルとして出力するかどうか。 |
強制コレクション
あなたが作成したコレクションに加え、Jekyllはposts
コレクションを強制的に保持しています。_posts
ディレクトリがあるかどうかは、関係ありません。site.collections
の反復処理を行う場合は注意してください。フィルタで除外する必要があるかもしれません。
コレクションを見つけるには、フィルタを使用するのがよいでしょう。
{{ site.collections | where: "label", "myCollection" | first }}
コレクションと日時
posts
コレクションのドキュメントを除き、作成した全てのコレクションのドキュメントは、割り当てられた日付の有無に関係なくLiquidでアクセス可能ですので、レンダリング可能です。
関連するコレクションのメタデータでoutput: true
が指定されている場合のみ、ドキュメントがディスクに書き込まれます。加えて、未来の日付のドキュメントはsite.future
がtrueの場合だけです。
ドキュメントをディスクに書き込むかの更に細かい設定は、front matterで published: false
(デフォルトはtrue
)を設定することで可能です。
ドキュメント
各ドキュメントのfront matterで記載されたものに加えて、次の属性を持っています。
変数 | 説明 |
---|---|
|
ドキュメントの(レンダリングされていない)コンテンツ。front matterが無い場合、Jekyllはコレクション内のファイルを生成しません。front matterがある場合は、front matter終了の`---`以降の全てです。 |
|
|
|
ドキュメントのソースファイルへのフルパス。 |
|
サイトからのドキュメントのソースへの相対パス。 |
|
出力されたコレクションのURL。サイトの設定で |
|
ドキュメントのコレクションの名前。 |
|
ドキュメントのコレクションの日付 |