液体模板:for循环中的偶数/奇数项

时间:2012-01-23 23:38:03

标签: jekyll liquid

如果我在Liquid中使用for循环(使用Jekyll),我怎样才能定位偶数(或奇数)项?我试过了:

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

但这似乎不起作用。我也尝试过:

(forloop.index % 2) == 1

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

2 个答案:

答案 0 :(得分:66)

我想你会想要使用循环标签。例如:

{% 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也应该有所帮助。

答案 1 :(得分:20)

Shopify support thread中的Ales Lande's answer所说的相反, 在Liquid中的modulo函数 - 以the modulo filter的形式。< / p>

有了它,你可以这样做:

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