web-dev-qa-db-ja.com

Liquid forループ内のカウンターをインクリメントするにはどうすればよいですか?

Liquid/Jekyllのforループ内でインデックス変数をインクリメントする方法を理解するのに苦労しています。現在、私はの線に沿って何かを持っています

{% for i in (0..num_posts) %}
    {% if i < some_value %}
        do_thing
    {% else %}
    {% endif %}
    {% assign i = i|plus:1 %}
    {% if i<some_value %}
        do_another_thing
    {% else %}
    {% endif %}
{% endfor %}

問題は、iをインクリメントする代わりに、iを同じ値のままにすることです。

私が試したこと:

  1. {% assign i = i|plus:1 %}を使用します。
  2. {% increment i %}を使用します。
  3. 使用する

    {% assign j = i|plus:1 %}
    {% assign i = j %}
    

コードがループ内の2つのifステートメントのみを常にチェックするとは限らないため、offsetコマンドも使用できません。

何か案は?

8
dkrist

ここで私はインデックスではありません。現在のインデックスを取得するには、{{forloop.index}}を使用します。

{% if forloop.index < 5 %}
    Do something
{% endif %}

ループ内で独自のカスタムインデックスを割り当てるには、次のようなものを使用できます。

{% assign i = 0 %}
{% for thing in things %}
    {% assign i = i | plus:1 %}
{% endfor %}
12
Alice Girard

使用するだけ

{% increment my_counter %}

新しい数値変数を作成し、呼び出されるたびにその値を1つずつ増やします。初期値は0です。デクリメントでも機能します。ただし、単純なカウンターが1つしかない場合は、リセットできず、常に「0」から始まります。

2
Felix