Файлы данных
Помимо встроенных переменных, доступных в Jekyll, вы можете указать собственные данные, к которым можно обращаться через систему шаблонов Liquid.
Jekyll поддерживает загрузку данных из файлов YAML, JSON, CSV и TSV, расположенных в каталоге _data. Обратите внимание: файлы 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>
Информацию о том, как создать удобную навигацию по сайту (особенно если у вас сайт с документацией или другой сайт на Jekyll с большим количеством страниц, которые нужно упорядочить), см. в разделе «Навигация».
Параметры разбора CSV/TSV
Способ разбора файлов CSV и TSV в Ruby можно настроить с помощью параметров конфигурации 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
© 2025 Jekyll Core Team and contributors
Licensed under the MIT license.
https://jekyllrb.com/docs/datafiles/