如何在Jekyll';s_数据文件夹?

如何在Jekyll';s_数据文件夹?,jekyll,liquid,Jekyll,Liquid,我如何循环查看Jekyll中我的_数据文件夹中的每个文件 目前,我在一个名为sidebarlist.yml的文件中有一个文件列表,如下所示: - file1 - file2 - file3 _data/ navigation.yml news.yml people/ advisors.yml board.yml staff.yml - name: Anne Smith role: Role A url: mysite.com - name: Joe

我如何循环查看Jekyll中我的_数据文件夹中的每个文件

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

- file1
- file2
- file3
_data/
  navigation.yml
  news.yml
  people/
    advisors.yml
    board.yml
    staff.yml
- name: Anne Smith
  role: Role A
  url: mysite.com
- name: Joe Shmoe
  role: Role B
  url: mysite.org
为了循环浏览所有这些文件,我使用以下代码:

{% for sidebar in site.data.sidebarlist %}
{% for entry in site.data.sidebars[sidebar].entries %}
...
{% endfor %}
{% endfor %}
我希望避免使用sidebarlist.yml,而只是自动遍历_data中的所有文件。我可以这样做吗?

根据,jekyll将直接将YAML资源(.yml、.YAML、.json和.csv文件)加载到
site.data
。如果文件使用以下格式之一,则可以执行以下操作:

{% for data in site.data %}
    ...
{% endfor %}

阅读你的问题标题和最后一个问题,我将回答:

您不能循环浏览保存在_data文件夹中的文件。根据和Jekyll目录结构,默认情况下,
\u data
中支持扩展名
.yml.yaml.csv.json
的所有文件都将加载到site.data中,比如@wasthishelpfull的答案,您可以通过
{site.data.*filename.data*}
访问它,然后像这样循环

如果要循环浏览文件,请创建一个文件夹
(无下划线)
将其作为静态文件,并对文件中的数据使用jquery.get()


或者将
\u config.yml
中的
\u data
更改为
data
,方法是添加
数据源:data
,并在url端点处访问
/data

嵌套循环允许您循环浏览数据文件的内容

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

我的数据目录如下所示:

- file1
- file2
- file3
_data/
  navigation.yml
  news.yml
  people/
    advisors.yml
    board.yml
    staff.yml
- name: Anne Smith
  role: Role A
  url: mysite.com
- name: Joe Shmoe
  role: Role B
  url: mysite.org
people/中的每个文件都使用如下结构:

- file1
- file2
- file3
_data/
  navigation.yml
  news.yml
  people/
    advisors.yml
    board.yml
    staff.yml
- name: Anne Smith
  role: Role A
  url: mysite.com
- name: Joe Shmoe
  role: Role B
  url: mysite.org
在我循环浏览这些数据文件的页面上:

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

  {% for person in people %}

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

  {% endfor %}

{% endfor %}
{%endfor%} 您将获得返回的值数组,这将有助于调试模板。

我假设您需要使用jekyll
site.data
的方式:


谢谢,虽然这确实加载了数据文件,但对于我试图实现的目标来说,这并不是很有效。也许我的用例更复杂,因为我试图进入每个文件中的特定yaml级别。我不确定您想要完成什么,所以我没有详细说明我的答案。请随意精确说明您的用例:)很好的答案;假设OP想要遍历yaml文件的一个平面列表,这个解决方案工作得很好。