Dataファイル

Jekyllの組み込み変数に加えて、Liquid templating systemからアクセスできるカスタムデータを設定できます。

Jekyllは_dataディレクトリのYAMLJSONCSVTSVファイルのデータ読み込みをサポートしています。
注:CSVとTSVはヘッダ行が必要です。

この強力な機能は、_config.ymlを変更することなく、テンプレートでの繰り返し処理やサイトの特別なオプションを提供します。

プラグインやテーマはデータファイルを利用して、設定用変数をセットできます。

データフォルダ

_dataフォルダがJekyllがサイトを生成するときに使う追加データを保管するフォルダです。ファイルは、YAMLかJSON、CSV(拡張子が.yml, .yaml, .json, .csv)ファイルで、site.dataからアクセス可能になります。

例:メンバーのリスト

大量のコードをJekyllテンプレートにコピー&ペースとしなくてすむように、データファイルの基本的な使用例を示します。

In _data/members.yml:

- name: Eric Mill
  github: konklone

- name: Parker Moore
  github: parkr

- name: Liu Fengyun
  github: liufengyun

Or _data/members.csv:

name,github
Eric Mill,konklone
Parker Moore,parkr
Liu Fengyun,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>

サブフォルダ

データファイルは_dataフォルダのサブフォルダに配置することもできます。各フォルダのレベルが変数のネームスペースとして追加されます。GitHub組織がorgsフォルダの各ファイルで設定されている場合の例を、以下にしまします。

In _data/orgs/jekyll.yml:

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

  - name: Parker Moore
    github: parkr

In _data/orgs/doeorg.yml:

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

組織には、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>

例:特定の著者へのアクセス

ページやポストもデータアイテムにアクセスすることができます。以下にその例を示します。

_data/people.yml:

dave:
    name: David Smith
    twitter: DavidSilvaSmith

ポストのfront matterでページ変数として著者(author)を指定できます。

---
title: sample post
author: dave
---

{% assign author = site.data.people[page.author] %}
<a rel="author"
  href="https://twitter.com/{{ author.twitter }}"
  title="{{ author.name }}">
    {{ author.name }}
</a>

(特にドキュメンテーションサイトや多くのページが存在するJekyllサイトを持っているなら)しっかりしたナビゲーションの構築のための情報は、ナビゲーションを見てください。