Jekyll 如何将frontmatter值传递到for循环中

Jekyll 如何将frontmatter值传递到for循环中,jekyll,Jekyll,我想在我的frontmatter中使用一个值来指定要循环的数据文件,但我无法让它工作 我在_data/sidebars/sidebar1.yml中有一个数据文件。它包括: - first - second - third 在一页上,我有一个正面的问题: --- title: My page sidebar: site.data.sidebar.sidebar1 --- 我想使用以下代码: {% for entry in page.sidebar %} * {{entry}} {% endfo

我想在我的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
标记来定义页面。侧边栏内容,但似乎没有任何效果)

唯一有效的方法是这样做:

{% 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:sidebar1

在代码中:

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

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

由于您必须在页面本身上分配边栏变量,您是否可以使用
{%作为site.data.sidebars.sidebar1%}
?在我的场景中,不同的页面将有不同的边栏。布局本身会将页面布局中指定的侧栏映射到_includes目录中的正确侧栏。我不想这样硬编码。我需要将侧边栏名称作为页面frontmatter中指定的变量传入。我在最初的帖子中试图简化场景,这样我就不会在细节上过于复杂,但我真的需要传入frontmatter的值。不过,你不能将集合引用传递给frontmatter。每个侧边栏的单独布局如何?谢谢你让我知道这是不可能的。为每个侧边栏创建单独的布局似乎比我的解决方法要复杂得多。不过,谢谢。大卫,如果我想把这个文档添加到某个地方的官方Jekyll文档中,你会如何描述这里发生了什么?例如,“为了将值从页面首页传递到赋值变量,当赋值变量不是字符串而是数据引用时,必须使用括号(而不是花括号)来引用首页的值。”?然后在这里提供代码示例。我没有合适的术语来描述这个。汤姆,你可以在液体或这个中找到灵感。谢谢你的参考。
{% assign sidebar = site.data.sidebars[page.sidebar]  %}

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