Startseite > Template- und Themeprogrammierung > Skriptsprache > Schleifen

Schleifen

Schleifen Befehle ermöglichen dass wiederholte Ausführen eines Programm-Abschnittes.

for

Der for Befehl erlaubt es in einer Schleife wiederholt Progamm Blöcke auszuführen.

<code-block>
{% for item in array %}
  {{ item }}
{% endfor %}

{% for link in link_lists %}
  {{ link.name }}
{% endfor %}
</code-block>

Innerhalb der for-Schleife steht das Objekt <obj>forloop</obj> zur Verfügung. Diese enthält nachfolgende Attribute.

forloop.first

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>

forloop.index

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>

forloop.index0

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>

forloop.last

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>

forloop.rindex

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>

forloop.rindex0

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>

forloop.length

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>

Info
Das forloop Objekt kann nur innerhalb einer for Schleife benutzt werden.

Die Anzahle der Elemente der Schleife und der Startpunkt können über die Attribute limit und offset gesteuert werden.

limit

Ü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>

offset

Ü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>

Bereich definieren

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>

cycle

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>

reversed

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>