Как выбрать конкретные элементы коллекции Jekyll - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь выбрать несколько конкретных предметов из коллекции в Джекилле. Мне удалось сделать это с помощью следующего кода:

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

но совсем не элегантно. Оглядываясь вокруг, я нашел вопрос StackOverflow , и мне кажется, что мне нужен именно такой ответ:

{% 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 голосов
/ 22 января 2019

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