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