Какой синтаксис Jekyll для фильтрации ключ: значение пары в Front Matter? - PullRequest
1 голос
/ 16 февраля 2020

На моем сайте Jekyll у меня есть страница, на которой хранится массив данных, например:

---
layout: page
title: MyTitle
array:
  - key1: value1
  - key2: value2
---

Что я хочу сделать в своем шаблоне: дано keyX , получить valueX из массива.

Я нашел способ доступа к массиву:

{% assign subpage = site.pages | where: 'title', 'MyTitle' %}
{% assign array = subpage[0].array %}

Теперь запрос, который мне нужно написать: «Из массива извлеките значение , соответствующее keyX ».

Есть ли способ поиска по массиву без необходимости циклического выполнения? Все примеры, которые я могу найти, основаны на одномерных массивах ...

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Ваш массив - это массив нестандартизированных объектов (у них нет одинаковых ключей).

{{ page.array | inspect }} 

возвращает

[{"key1"=>"value1"}, {"key2"=>"value2"}]

Здесь единственный способ поиска - это l oop поверх всех элементов массива.

Если вы реорганизуете свой массив, чтобы стать объектом, вы можете получить значение из ключа.

---
[...]
object:
  key1: value1
  key2: value2
...

Пример:

{% assign searched = "key1" %}
{{ page.object[searched] }}
0 голосов
/ 16 февраля 2020

Тем временем я нашел этот обходной путь:

{% for valueList in array %}
  {% for valuePair in valueList %}
    {% if valuePair[0] ==  "key1" %}
      {% assign value = valuePair[1] %}
    {% endif %}
  {% endfor %}
{% endfor %}
...