如何 select Jekyll 集合的特定元素

How to select specific elements of a Jekyll collection

我正在尝试 select 从 Jekyll 的集合中提取一些特定的项目。我设法使用以下代码做到了这一点:

{% for paper in site.papers %}
{% if paper.paper-id == "Trott2010" %}
[{{ paper.title }}]({{ paper.url }})
{% endif %}
{% endfor %}

但一点也不优雅。环顾四周,我发现了这个 ,答案似乎正是我需要的:

{% assign paper = site.papers | where:"Trott2010", page.paper-id  | first %}

如果我每页只使用一次,这将按预期工作。不幸的是,如果我想得到不止一张纸 prom site.papers(将它分配给具有不同名称的变量),它不起作用,我真的不明白。如果我使用

{% assign paper1 = site.papers | where:"Trott2010", page.paper-id  | first %}
[{{ paper1.title }}]({{ paper1.url }})

{% assign paper2 = site.papers | where:"Scousa2013", page.paper-id  | first %}
[{{ paper2.title }}]({{ paper2.url }})

两个实例的输出完全相同。

感谢任何帮助。

where 选择数组中键具有给定值 (array | where: "key", "value") 的所有对象。所以在你的情况下应该是:

{% assign paper1 = site.papers | where: "paper-id", "Trott2010" | first %}
[{{ paper1.title }}]({{ paper1.url }})

{% assign paper2 = site.papers | where:"paper-id", "Scousa2013" | first %}
[{{ paper2.title }}]({{ paper2.url }})