データファイル
Jekyllで利用可能な組み込み変数に加えて、Liquidテンプレートシステムを介してアクセスできる独自のカスタムデータを指定できます。
Jekyllは、_dataディレクトリにあるYAML、JSON、CSV、およびTSVファイルからのデータのロードをサポートしています。 CSVおよびTSVファイルには、ヘッダー行が必ず含まれている必要があることに注意してください。
この強力な機能により、テンプレートでの繰り返しを回避し、_config.ymlを変更せずにサイト固有のオプションを設定できます。
プラグイン/テーマは、データファイルを利用して設定変数を設定することもできます。
データフォルダ
_dataフォルダは、Jekyllがサイトを生成するときに使用する追加のデータを保存できる場所です。これらのファイルはYAML、JSON、TSV、またはCSVファイル(.yml、.yaml、.json、.tsv、または.csv拡張子を使用)である必要があり、site.dataを介してアクセスできます。
例:メンバーリスト
Jekyllテンプレートでコードの大きな塊をコピー&ペーストすることを避けるために、データファイルを使用する基本的な例を次に示します。
_data/members.yml内
- name: Eric Mill
  github: konklone
- name: Parker Moore
  github: parkr
- name: Liu Fengyun
  github: liufengyun
または_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フォルダの下のファイルで個別に定義できる方法を示しています。
_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
組織には、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
その後、著者を投稿のフロントマターでページ変数として指定できます。
---
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>
サイト(特にドキュメントWebサイトや整理するページが多い別のタイプのJekyllサイト)の堅牢なナビゲーションを構築する方法については、ナビゲーションを参照してください。
CSV/TSV解析オプション
RubyがCSVおよびTSVファイルを解析する方法は、csv_readerおよびtsv_reader構成オプションでカスタマイズできます。各構成キーは同じオプションを公開します。
converters:ファイルを解析するときに使用するCSVコンバーター。利用可能なオプションは、integer、float、numeric、date、date_time、およびallです。デフォルトでは、このリストは空です。encoding:ファイルのエンコーディング。デフォルトは、サイトのencoding構成オプションです。headers:ファイルの最初の行をヘッダーとして解析するかどうかを示すブールフィールド。falseの場合、最初の行をデータとして扱います。デフォルトはtrueです。
例
csv_reader:
    converters:
      - numeric
      - datetime
    headers: true
    encoding: utf-8
tsv_reader:
    converters:
      - all
    headers: false
