Жидкие шаблоны: четные/нечетные элементы для цикла
Если у меня есть цикл for в Liquid (с помощью Jekyll), как я могу нацелить только (или нечетные) элементы? Я пробовал:
{% for item in site.posts %}
{% if forloop.index % 2 == 1 %}
но это, похоже, не работает. Я также пробовал:
(forloop.index % 2) == 1
и
forloop.index - (forloop.index / 2 * 2) == 1
Ответы
Ответ 1
Я думаю, вам нужно использовать тег цикла для этого. Например:
{% for post in site.categories.articles %}
<article class="{% cycle 'odd', 'even' %}"></article>
{% endfor %}
Если вы хотите разную разметку HTML для каждого цикла:
{% for item in site.posts %}
{% capture thecycle %}{% cycle 'odd', 'even' %}{% endcapture %}
{% if thecycle == 'odd' %}
<div>echo something</div>
{% endif %}
{% endfor %}
Дополнительную информацию об этом можно найти в Liquid for Designers, хотя пример не особенно полезен. Этот Shopify support thread также должен помочь.
Ответ 2
В отличие от того, что узнать нишу поддержки в ответ Алеса Ланде, там есть a modulo
функция в Liquid - в форме фильтр modulo
.
С его помощью вы можете сделать это:
{% for item in site.posts %}
{% assign mod = forloop.index | modulo: 2 %}
{% if mod == 0 %}
<!-- even -->
{% else %}
<!-- odd -->
{% endif %}
{% endfor %}