Как использовать фильтры «где» с оператором «или» - PullRequest
1 голос
/ 13 апреля 2019

Я создаю шаблон Liquid, в котором я ищу документы в коллекции, в которой заданным тегом метаданных является «valueA» ИЛИ «valueB».

Я пробовал следующее:

{% assign item = site.rn | where: "type", "typeA" OR "typeB" %}
{% assign item = site.rn | where: "type", "typeA" "typeB" %} 
{% assign item = site.rn | where: "type", "typeA" | where: "type", "typeB" %}

Ни один из приведенных выше примеров не возвращает оба элемента, где type = typeA, и элементы, где type = typeB. Первые два возвращают только элементы, где type = typeA. Третий ничего не возвращает, потому что нет элементов, где type = typeA и type = typeB.

1 Ответ

0 голосов
/ 13 апреля 2019

Редактировать

Похоже, что бинарный оператор в where_exp не будет поддерживаться до Jekyll 4 .

Как вы указали в своем комментарии под своим вопросом, вы можете перебрать свою коллекцию и передать массив в зависимости от структуры управления if.

{% assign items = "" | split:"" %}

{% for item in site.rn %}
  {% if item.type == 'typeA' or item.type == 'typeB' %}
    {% assign items = items | push: item %}
  {% endif %}
{% endfor %}

конец редактирования

Это будет работать в Jekyll 4

Вы можете попробовать специфический для jekyll жидкостный фильтр `where_exp '( см. Документацию ).

{% assign item = site.rn | where: "item", "item.type == 'typeA' or item.type == 'typeB'" %}
...