Jekyll 嵌套数据

Jekyll Nested Data

我的 jekyll 博客有一个嵌套的 yaml 数据文件,如下所示:

Nickname1:
      name: John
      address: Johnstreet 1

Nickname2:
     name: Rudolf
     address: Rudolfstreet 1

我用它来打印每个 post 之后的附加信息,我在前面的内容中指定了这些信息。这很好用。

我现在想创建一个网站,列出该数据文件的所有条目。这在理论上应该很容易:

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

但是,这不起作用,因为 YAML 数据是嵌套的。数据必须保持嵌套,每个条目都需要有不同的昵称。这样做的问题当然是我无法遍历所有条目,因为它们的名称都不同。

你们能帮帮我吗?有什么方法可以在不更改数据文件的嵌套结构的情况下实现这一目标?更改嵌套结构会破坏我网站的大部分内容。

提前致谢。

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 docs example on 'dictionary' usage

Jekyll docs example on 'list' usage