如何将 frontmatter 值传递给 for 循环

How to pass a frontmatter value into a for loop

我想在我的 frontmatter 中使用一个值来指定要循环的数据文件,但我无法让它工作。

我在_data/sidebars/sidebar1.yml 中有一个数据文件。它包含:

- first
- second
- third

在一个页面上我有这个前言:

---
title: My page
sidebar: site.data.sidebar.sidebar1
---

我想使用这个代码:

{% for entry in page.sidebar %}
* {{entry}}
{% endfor %}

但是,这不起作用。我已经尝试了很多事情(涉及 assigncapture 标签来定义 page.sidebar 内容,但似乎没有任何效果)。

唯一可行的方法就是这样做:

{% if page.sidebar == "site.data.sidebars.sidebar1" %}
{% assign sidebar = site.data.sidebars.sidebar1 %}
{% endif %}

{% for entry in sidebar %}
* {{entry}}
{% endfor %}

但是,我想用 if 语句避免这个额外的代码,因为它很容易忘记,我想更多地自动化它。

关于如何使这项工作有任何想法吗?

你的前言有错别字。它是:

sidebar: site.data.sidebars.sidebar1

没有

sidebar: site.data.sidebar.sidebar1

你甚至可以不那么冗长。

在你的前面:sidebar: sidebar1

在您的代码中:

{% assign sidebar = site.data.sidebars[page.sidebar]  %}

{% for entry in sidebar %}
  {{ entry | inspect }}
{% endfor %}