Spec-Zone.ru › Jekyll 4

Файлы данных

Помимо встроенных переменных, доступных в 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API