我正在尝试从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 }})
两个实例的输出完全相同。
感谢您的帮助。
答案 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 }})