如何循环遍历Jekyll的_data文件夹中的所有文件?

Tom*_*son 4 liquid jekyll

如何循环遍历 Jekyll 中 _data 文件夹中的每个文件?

目前,我在名为 sidebarlist.yml 的文件中有一个文件列表,如下所示:

- file1
- file2
- file3
Run Code Online (Sandbox Code Playgroud)

为了循环遍历所有这些文件,我使用以下代码:

{% for sidebar in site.data.sidebarlist %}
{% for entry in site.data.sidebars[sidebar].entries %}
...
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我想避免使用 sidebarlist.yml 并自动迭代 _data 中的所有文件。我可以这样做吗?

jme*_*jme 6

嵌套循环允许您循环访问 _data 文件的内容。

当我这样做时,我使用了一个子目录,因为我不想循环遍历每个数据文件,并且我认为这适用于许多用例。它还使我的 _data 目录更加整洁。

我的 _data 目录如下所示:

_data/
  navigation.yml
  news.yml
  people/
    advisors.yml
    board.yml
    staff.yml
Run Code Online (Sandbox Code Playgroud)

people/ 中的每个文件都使用如下结构:

- name: Anne Smith
  role: Role A
  url: mysite.com
- name: Joe Shmoe
  role: Role B
  url: mysite.org
Run Code Online (Sandbox Code Playgroud)

在我循环访问每个数据文件的页面上:

{% for people_hash in site.data.people %}
{% assign people = people_hash[1] %}

  {% for person in people %}

    <li>{{ person.name }}, {{ person.role }}</li>

  {% endfor %}

{% endfor %}
Run Code Online (Sandbox Code Playgroud)

这导致:

<li>Anne Smith, Role A</li>
<li>Joe Shmoe, Role B</li>
Run Code Online (Sandbox Code Playgroud)

它与您已经完成的操作非常相似,但不需要额外的 yaml 文件。


people_hash[1]请注意- 这是针对数组中适当值的使用。

如果你这样做:

{% for people_hash in site.data.people %}
{% assign people = people_hash[1] %}

    <pre>{{ people }}</pre>

{% endfor %}
Run Code Online (Sandbox Code Playgroud)

您将获得返回的值数组,这应该可以帮助您调试模板。