如何将 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 %}
但是,这不起作用。我已经尝试了很多事情(涉及 assign
和 capture
标签来定义 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 %}
我想在我的 frontmatter 中使用一个值来指定要循环的数据文件,但我无法让它工作。
我在_data/sidebars/sidebar1.yml 中有一个数据文件。它包含:
- first
- second
- third
在一个页面上我有这个前言:
---
title: My page
sidebar: site.data.sidebar.sidebar1
---
我想使用这个代码:
{% for entry in page.sidebar %}
* {{entry}}
{% endfor %}
但是,这不起作用。我已经尝试了很多事情(涉及 assign
和 capture
标签来定义 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 %}