コレクション

コレクションは、チームのメンバーや会議でのトークなどの関連コンテンツをグループ化するのに最適な方法です。

セットアップ

コレクションを使用するには、まず_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でコレクションをひとまとめにしたなら、_draftsmy_collections/_draftsに、_postsmy_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で指定したメタデータを付加することで使用できます。情報を以下に示します。

変数 説明

label

コレクションの名前。my_collectionなど。

docs

ドキュメントの配列。

files

コレクションの静的ファイルの配列。

relative_directory

コレクションのディレクトリへの、サイトからの相対パス。

directory

コレクションのディレクトリへのフルパス。

output

コレクションのドキュメントを個別のファイルとして出力するかどうか。

強制コレクション

あなたが作成したコレクションに加え、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で記載されたものに加えて、次の属性を持っています。

変数 説明

content

ドキュメントの(レンダリングされていない)コンテンツ。front matterが無い場合、Jekyllはコレクション内のファイルを生成しません。front matterがある場合は、front matter終了の`---`以降の全てです。

output

contentの出力。

path

ドキュメントのソースファイルへのフルパス。

relative_path

サイトからのドキュメントのソースへの相対パス。

url

出力されたコレクションのURL。サイトの設定でoutput: trueが指定されている場合のみファイルが出力されます。

collection

ドキュメントのコレクションの名前。

date

ドキュメントのコレクションの日付