Петля через отфильтрованную коллекцию в jekyll

Я стараюсь делать такие вещи в моем сообщении:

<ul class="articles-list">
  {% for post in site.posts | where:'group', post.group %}
    <div data-scroll-reveal="enter ease 0">
      {% include article-snippet.html %}
    </div>
  {% endfor %}
</ul>

но он все-таки перебирает всю мою коллекцию, а не только записи петель с особой группой.

Ответ 1

Вы не можете использовать фильтр в цикле.

Но вы можете сделать:

{% assign posts = site.posts | where:'group', post.group %}

<ul class="articles-list">
  {% for post in posts %}
    <div data-scroll-reveal="enter ease 0">
      {% include article-snippet.html %}
    </div>
  {% endfor %}
</ul>

Ответ 2

В соответствии с жидкостной документацией об фильтрах они должны использоваться внутри выходных тегов {{ и }}.

Возможно, вы можете попробовать оператор if:

{% for post in site.posts %}
    {% if post.group == 'group' %}
        <div data-scroll-reveal="enter ease 0">
            {% include article-snippet.html %}
        </div>
    {% endif %}
{% endfor %}

Также вы должны использовать фильтр немного по-другому. Что-то вроде этого:

{{ site.members | where:"graduation_year","2014" }}

Это говорит о выборе членов сайта, выпуск которых равен 2014. Вам не нужно указывать, что он должен фильтровать элементы, первая часть неявно заявляет, что.