Жидкие шаблоны: четные / нечетные элементы в цикле for - PullRequest
40 голосов
/ 24 января 2012

Если у меня есть цикл for в Liquid (с использованием Jekyll), как я могу ориентироваться только на четные (или нечетные) элементы? Я пробовал:

{% for item in site.posts %}
    {% if forloop.index % 2 == 1 %}

но это не похоже на работу. Я также попробовал:

(forloop.index % 2) == 1

и

forloop.index - (forloop.index / 2 * 2) == 1

Ответы [ 2 ]

66 голосов
/ 24 января 2012

Я думаю, вы захотите использовать для этого тег цикла.Например:

{% 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 также должна помочь.

20 голосов
/ 30 сентября 2015

В отличие от того, что Поток поддержки Shopify в Ответ Алеся Ланде говорит, что есть a modulo функция в жидкости - в форме фильтр modulo .

С его помощью вы можете сделать это:

{% for item in site.posts %}
    {% assign mod = forloop.index | modulo: 2 %}
    {% if mod == 0 %}
        <!-- even -->
    {% else %}
        <!-- odd -->
    {% endif %}
{% endfor %}
...