Dataファイル
Jekyllの組み込み変数に加えて、Liquid templating systemからアクセスできるカスタムデータを設定できます。
Jekyllは_data
ディレクトリのYAML・JSON・CSV・TSVファイルのデータ読み込みをサポートしています。
注: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サイトを持っているなら)しっかりしたナビゲーションの構築のための情報は、ナビゲーションを見てください。