Вложенные данные Jekyll - PullRequest
       8

Вложенные данные Jekyll

0 голосов
/ 21 февраля 2019

У меня есть вложенный файл данных yaml для моего блога jekyll, например:

Nickname1:
      name: John
      address: Johnstreet 1

Nickname2:
     name: Rudolf
     address: Rudolfstreet 1

Я использую его для печати дополнительной информации после каждого поста, которую я указываю в начале статьи.Это отлично работает.

Теперь я хочу создать сайт, который перечисляет все записи этого файла данных.Теоретически это должно быть легко:

{% for nickname in site.data.NAMEOFFILE %}
    <li> {{ nickname.address }} </li>
{% endfor %}

Однако это не работает, потому что данные YAML являются вложенными.Данные должны оставаться вложенными, и у каждой записи должен быть свой псевдоним.Проблема в том, что, конечно, я не могу перебрать все записи, потому что все они имеют разные имена.

Можете ли вы помочь мне здесь?Есть ли способ, которым я могу достичь этого без изменения вложенной структуры моего файла данных?Изменение вложенной структуры приведет к поломке больших частей моего сайта.

Заранее спасибо.

1 Ответ

0 голосов
/ 21 февраля 2019

Файлы данных Jekyll могут быть настроены в двух форматах: список или словарь (не официальная терминология, но именно так я их называю и что помогает мне понять их).

Списки используются для итерации.Словари используются для поиска отдельного элемента и не должны использоваться в итерации.

// list.yml
- nickname: Nickname1
  name: John
  address: Johnstreet 1

- nickname: Nickname2
  name: Rudolf
  address: Rudolfstreet 1

...

// usage
{% for person in site.data.list %}
    <li> {{ person.address }} </li>
{% endfor %}
// dictionary.yml
Nickname1:
  name: John
  address: Johnstreet 1

Nickname2:
  name: Rudolf
  address: Rudolfstreet 1

...

// usage
{% assign person = site.data.dictionary['Nickname1'] %}
<ul>
    <li> {{ person.address }} </li>
</ul>

У меня одни и те же данные в двух разных файлах: один в формате списка и один в словареформат.Это позволяет мне выполнять итерации или делать конкретные поиски, когда мне нужно.Недостатки в том, что вы дублировали данные в двух разных файлах и должны поддерживать согласованность при каждом внесении изменений.

Чтобы решить вашу конкретную проблему, я создал бы другой файл данных, в котором данные были бы отформатированы в виде списка, чтобы вы могли перебирать данные.Это означает, что вам не нужно изменять файл с вложенной структурой и избежать взлома сайта.

Пример документации Jekyll по использованию словаря

Пример документации Jekyll по списку

...