データファイル

Jekyll から利用できる組み込み変数に加えて、 Liquid templating system を 介してアクセス可能な独自のカスタムデータを指定できます。

Jekyll は _data ディレクトリの中に配置された YAML ファイルおよび JSON ファイルからのデータ読み込みをサポートしています。

この強力な機能を利用すれば、テンプレート内で繰り返しを避けることができ、また、 _config.yml を変更せずともサイト特有のオプションを設定することができます。

プラグイン/テーマも環境設定のためにデータファイルを活用することができます。

データフォルダ

ディレクトリ構成ページで説明しているように、 あなたのサイトを生成する時に Jekyll が使用する追加的なデータを 格納できる場所が _data フォルダです。 これらのファイルは YAML ファイル(拡張子は .yml, .yaml または .json を使用) であるべきであり、そしてそれらは site.data 経由でアクセスできるようになります。

例: メンバーのリスト

データファイルを使用すれば、 Jekyll テンプレートでたくさんのコードをコピー&ペーストしなくて済むようになります。 基本的な例は下記の通りです。

_data/members.yml に次のように記述します:

- name: Tom Preston-Werner
  github: mojombo

- name: Parker Moore
  github: parkr

- name: Liu Fengyun
  github: liufengyun

このデータには site.data.members 経由でアクセスできます (ファイル名が変数名を決定していることに注意してください)。

これで、テンプレート内のメンバーリストをレンダリングできるようになりました:

<ul>
{% for member in site.data.members %}
  <li>
    <a href="https://github.com/{{ member.github }}">
      {{ member.name }}
    </a>
  </li>
{% endfor %}
</ul>

例: Organizations

データファイルは _data フォルダの下位のフォルダに配置することもできます。 各フォルダレベルが変数の名前空間に追加されます。 以下の例は、GitHub の organizations を orgs フォルダ配下のファイルに 分割して定義するとしたらどのようになるかを示しています。

_data/orgs/jekyll.yml に次のように記述します:

username: jekyll
name: Jekyll
members:
  - name: Tom Preston-Werner
    github: mojombo

  - name: Parker Moore
    github: parkr

_data/orgs/doeorg.yml に次のように記述します:

username: doeorg
name: Doe Org
members:
  - name: John Doe
    github: jdoe

organizations は site.data.orgs のあとにファイル名を続ける形でアクセスできます:

<ul>
{% for org_hash in site.data.orgs %}
{% assign org = org_hash[1] %}
  <li>
    <a href="https://github.com/{{ org.username }}">
      {{ org.name }}
    </a>
    ({{ org.members | size }} members)
  </li>
{% endfor %}
</ul>