48

Liquidにforループがある場合(Jekyllを使用)、偶数(または奇数)のアイテムのみをターゲットにするにはどうすればよいですか?私が試してみました:

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

しかし、それはうまくいかないようです。私も試しました:

(forloop.index % 2) == 1

と:

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

2 に答える 2

81

これには cycle タグを使用するとよいと思います。例えば:

{% 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 サポート スレッドも役立ちます。

于 2012-01-24T00:28:34.140 に答える
35

Ales Landeの回答のShopifyサポートスレッドが言うこととは対照的に、Liquidにフィルターの形で機能がありますmodulomodulo

これを使用すると、次のことができます。

{% for item in site.posts %}
    {% assign mod = forloop.index | modulo: 2 %}
    {% if mod == 0 %}
        <!-- even -->
    {% else %}
        <!-- odd -->
    {% endif %}
{% endfor %}
于 2015-09-30T15:44:23.550 に答える