Schleifen Befehle ermöglichen dass wiederholte Ausführen eines Programm-Abschnittes.
Der for Befehl erlaubt es in einer Schleife wiederholt Progamm Blöcke auszuführen.
<code-block>
{% for item in array %}
{{ item }}
{% endfor %}
Innerhalb der for-Schleife steht das Objekt <obj>forloop</obj> zur Verfügung. Diese enthält nachfolgende Attribute.
Gibt <liquid>true</liquid> zurück, falls es sich um den ersten Durchlauf der Schleife handelt und <liquid>false</liquid> für alle anderen Schleifen-Durchgänge.
<liquid-input>
{% for link in link_lists %}
{% if forloop.first == true %}
Is the first loop.
{% else %}
Is not the first loop!
{% endif %}
{% endfor %}
</liquid-input>
<liquid-output>
Is the first loop.
Is not the first loop!
Is not the first loop!
Is not the first loop!
Is not the first loop!
</liquid-output>
Gibt den Index der aktuellen Schleife zurück, mit dem Index 1 beginnend.
<liquid-input>
{% for link in link_lists %}
{{ forloop.index }}
{% endfor %}
</liquid-input>
<liquid-output>
1 2 3 4 5
</liquid-output>
Gibt den Index der aktuellen Schleife zurück, beginnend mit dem Index 0 .
<liquid-input>
{% for link in link_lists %}
{{ forloop.index0 }}
{% endfor %}
</liquid-input>
<liquid-output>
0 1 2 3 4
</liquid-output>
Gibt <liquid>true</liquid> zurück, falls es sich um den letzten Durchlauf der Schleife handelt und <liquid>false</liquid> für alle anderen Schleifen-Durchgänge.
<liquid-input>
{% for link in link_lists %}
{% if forloop.last == true %}
The last loop!
{% else %}
Continue!
{% endif %}
{% endfor %}
</liquid-input>
<liquid-output>
Continue!
Continue!
Continue!
Continue!
The last loop!
</liquid-output>
Gibt die Anzahl der noch bevorstehenden Durchgänge zurück.
<liquid-input>
{% for link in link_lists %}
{{ forloop.rindex }}
{% endfor %}
</liquid-input>
<liquid-output>
5 4 3 2 1
</liquid-output>
Gibt die Anzahl der noch bevorstehenden Durchgänge zurück, wobei der letzter Durchlauf den Index 0 besitzt.
<liquid-input>
{% for link in link_lists %}
{{ forloop.rindex0 }}
{% endfor %}
</liquid-input>
<liquid-output>
4 3 2 1 0
</liquid-output>
Gibt die Anzahl der Durchläufe der gesamten Schleife zurück.
<liquid-input>
{% for link in link_lists %}
{% capture length %}{{ forloop.length }}{% endcapture %}
{% endfor %}
{{ length }}
</liquid-input>
<liquid-output>
5
</liquid-output>
Die Anzahle der Elemente der Schleife und der Startpunkt können über die Attribute limit und offset gesteuert werden.
Über limit wird die Anzahl der Elemente der for Schleife begrenzt.
<liquid-input>
{% for item in (1..5) limit:2 %}
{{ item }}
{% endfor %}
</liquid-input>
<liquid-output>
1 2
</liquid-output>
Über offset wird dass Startelement für die for Schleife bestimmt.
<liquid-input>
{% for item in (1..5) offset:2 %}
{{ item }}
{% endfor %}
</liquid-input>
<liquid-output>
3 4 5
</liquid-output>
limit und offset können auch gleichzeitig eingesetzt werden:
<liquid-input>
{% for item in (1..6) offset:2 limit:3 %}
{{ item }}
{% endfor %}
</liquid-input>
<liquid-output>
3 4 5
</liquid-output>
Der zu durchlaufende Bereich der for Schleife, kann mit Hilfe von Ziffern oder Variablen wie folgt definiert werden:
<liquid-input>
{% assign num = 5 %}
{% for item in (1..num) %}
{{ item }}
{% endfor %}
{% for item in (2..5) %}
{{ item }}
{% endfor %}
</liquid-input>
<liquid-output>
1 2 3 4 5
2 3 4 5
</liquid-output>
Mit cycle kann aus einer Gruppe von Strings, in jedem Durchlauf, dass nächste Element ausgegeben werden.
<liquid-input>
{% cycle 'one', 'two', 'three', 'four' %}
{% cycle 'one', 'two', 'three', 'four' %}
{% cycle 'one', 'two', 'three', 'four' %}
</liquid-input>
<liquid-output>
one two three
</liquid-output>
Die Reihe der Strings kann währen der cycle Aufrufe in Gruppen eingeteilt werden.
<liquid-input>
{% cycle 'group1': 'one', 'two', 'three', 'four' %}
{% cycle 'group1': 'one', 'two', 'three', 'four' %}
{% cycle 'group2': 'one', 'two', 'three', 'four' %}
{% cycle 'group2': 'one', 'two', 'three', 'four' %}
{% cycle 'group2': 'one', 'two', 'three', 'four' %}
</liquid-input>
<liquid-output>
one two one two three
</liquid-output>
Mit reversed kann die for-Schleife in umgekehrter Reihenfolge ausgeführt werden..
<liquid-input>
{% for item in (1..5) reversed %}
{{ item }}
{% endfor %}
</liquid-input>
<liquid-output>
5 4 3 2 1
</liquid-output>