データファイル
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