Файлы с данными
В дополнение к встроенным переменным, вы можете задавать свои собственные данные, доступные с помощью шаблонизатора Liquid.
Jekyll поддерживает загрузку данных в форматах YAML, JSON и CSV из файлов, расположенных в каталоге _data
. Отметьте, чтов файлах CSV должен быть заголовок.
Возможность добавлять данные позволяет вам избегать повторения в ваших шаблонах, а также задавать отдельные опции сайта без изменений в config.yml.
.
Плагины и темы также могут использовать файлы с данными для задания конфигурационных переменных.
Каталог с данными
Как было сказано в разделе о структуре каталогов, каталог _data
это место где вы можете хранить дополнительные данные, используемые Jekyll при генерации сайта. Это должны быть файлы YAML (с расширениями .yml
, .yaml
, .json
или csv
), они доступны через site.data
.
Пример: список членов
Это простейший пример использования файлов с данными вместо многократного копирования больших фрагментов кода в шаблонах Jekyll.
В файле _data/members.yml
:
- name: Tom Preston-Werner
github: mojombo
- name: Parker Moore
github: parkr
- name: Liu Fengyun
github: liufengyun
Или в _data/members.csv
:
name,github
Tom Preston-Werner,mojombo
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="{{ author.twitter }}"
title="{{ author.name }}">
{{ author.name }}
</a>