如何选择Jekyll集合的特定元素

时间:2019-01-21 21:45:20

标签: jekyll liquid

我正在尝试从Jekyll的集合中选择一些特定项目。我使用以下代码成功做到了:

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

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

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

如果我每页只使用一次,它将按预期工作。不幸的是,如果我想获得一个以上的纸质舞会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 }})

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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 }})