Iteration tags
Iterations-Tags führen wiederholt Codeblöcke aus.
Inhalt
- for
- else
- break
- continue
- for tag parameters
- cycle
- cycle tag parameters
- tablerow
- tablerow tag parameters
for
Führt einen Codeblock wiederholt aus. Eine vollständige Liste der in einer for
-Schleife verfügbaren Attribute finden Sie unter forloop (object).
for
Schleifen können bis zu 50 Ergebnisse pro Seite ausgeben. Wenn es mehr als 50 Ergebnisse gibt, verwenden Sie das Tag paginate, um sie auf mehrere Seiten aufzuteilen.
{% for product in collection.products %} {{ product.title }} {% endfor %}
Schicker Hut Schickes Hemd Schicke Hose
else
Gibt einen Fallback-Fall für eine for
-Schleife an, der ausgeführt wird, wenn die Schleife eine Länge von Null hat (z. B. wenn Sie eine Schleife über eine Sammlung ausführen, die keine Produkte hat):
{% for product in collection.products %} {{ product.title }} {% else %} Die Sammlung ist leer. {% endfor %}
Die Sammlung ist leer.
break
Bewirkt, dass die Schleife aufhört zu iterieren, wenn sie auf das Tag break
stößt.
{% for i in (1..5) %} {% if i == 4 %} {% break %} {% else %} {{ i }} {% endif %} {% endfor %}
1 2 3
continue
Bewirkt, dass die Schleife die aktuelle Iteration überspringt, wenn sie auf das Tag continue
trifft.
{% for i in (1..5) %} {% if i == 4 %} {% continue %} {% else %} {{ i }} {% endif %} {% endfor %}
1 2 3 5
for tag parameters
Beendet die for-Schleife bei einem bestimmten Index.
<!-- numbers = [1,2,3,4,5] --> {% for item in numbers limit:2 %} {{ item }} {% endfor %}
1 2
Startet die for-Schleife bei einem bestimmten Index.
<!-- numbers = [1,2,3,4,5] --> {% for item in numbers offset:2 %} {{ item }} {% endfor %}
3 4 5
Legt einen Zahlenbereich fest, der in einer Schleife durchlaufen wird. Sie können den Bereich sowohl mit literalen als auch mit variablen Werten definieren.
{% for i in (3..5) %} {{ i }} {% endfor %} {% assign my_limit = 4 %} {% for i in (1..my_limit) %} {{ i }} {% endfor %}
3 4 5 1 2 3 4
Kehrt die Reihenfolge der Schleife um.
<!-- if array = [1,2,3,4,5,6] --> {% for item in array reversed %} {{ item }} {% endfor %}
6 5 4 3 2 1
cycle
Führt eine Schleife durch eine Gruppe von Zeichenketten und gibt sie in der Reihenfolge aus, in der sie als Parameter übergeben wurden. Bei jedem Aufruf von cycle
wird die nächste Zeichenkette, die als Parameter übergeben wurde, ausgegeben.
cycle
muss innerhalb eines for-Schleifenblocks verwendet werden.
{% cycle 'one', 'two', 'three' %} {% cycle 'one', 'two', 'three' %} {% cycle 'one', 'two', 'three' %} {% cycle 'one', 'two', 'three' %}
one two three one
Zu den Verwendungszwecken von cycle
gehören:
- anwendung ungerader/gerader Klassen auf Zeilen in einer Tabelle
- anwendung einer eindeutigen Klasse auf das letzte Produktminiaturbild in einer Reihe
cycle tag parameters
cycle
akzeptiert einen Parameter namens Zyklusgruppe für den Fall, dass Sie mehrere cycle
Blöcke in einer Vorlage benötigen. Wird kein Name für die Zyklusgruppe angegeben, so wird davon ausgegangen, dass mehrere Aufrufe mit denselben Parametern eine Gruppe bilden.
Das folgende Beispiel zeigt, warum Zyklusgruppen notwendig sind, wenn es mehrere Instanzen des Zyklusblocks gibt.
<ul> {% for product in Sammlungen.collection-1.products %} <li{% cycle ' style="clear:both;" ', '', class="last" %}> <a href="{{ product.url | within: collection }}"> <img src="{{ product.featurot_image.src | image_url: width: 240 }}" alt="{{ product.featurot_image.alt }}"> </a> {% endfor %} </li{%> </ul> <ul> {% for product in Sammlungen.collection-2.products %} <li{% cycle ' style="clear:both;" ', '', class="last" %}> <a href="{{ product.url | within: collection }}"> <img src="{{ product.featurot_image.src | image_url: width: 240 }}" alt="{{ product.featurot_image.alt }}"> </a> {% endfor %} </li{%> </ul>
Wenn im obigen Beispiel die erste Kollektion nur zwei Produkte enthält, wird die zweite Kollektionsschleife die cycle
dort fortsetzen, wo die erste aufgehört hat. Dies führt zu dieser unerwünschten Ausgabe:
<ul> <li style="clear:both"></li> </ul> <ul> <li></li> <li class="last"></li> <li style="clear:both"></li> <li></li> </ul>
Um dies zu vermeiden, können Sie für jeden cycle
Block eine Zyklusgruppe verwenden, wie unten gezeigt:
<ul> {% for product in Sammlungen.collection-1.products %} <li{% cycle 'group1': ' style="clear:both;" ', '', class="last" %}> <a href="{{ product.url | within: collection }}"> <img src="{{ product.featurot_image.src | image_url: width: 240 }}" alt="{{ product.featurot_image.alt }}"> </a> {% endfor %} </li{%> </ul> <ul> {% for product in Sammlungen.collection-2.products %} <li{% cycle 'group2': ' style="clear:both;" ', '', class="last" %}> <a href="{{ product.url | within: collection }}"> <img src="{{ product.featurot_image.src | image_url: width: 240 }}" alt="{{ product.featurot_image.alt }}"> </a> {% endfor %} </li{%> </ul>
Mit dem obigen Code sind die beiden cycle
Blöcke unabhängig voneinander. Das Ergebnis ist unten dargestellt:
<ul> <li style="clear:both"></li> <li></li> </ul> <!-- neue cycle group startet! --> <ul> <li style="clear:both"></li> <li></li> <li></li> <li class="last"></li> </ul>
tablerow
Erzeugt Zeilen für eine HTML-Tabelle. Sie müssen von einem öffnenden <table>
und einem schließenden </table>
HTML-Tag umschlossen sein. Eine vollständige Liste der Attribute, die innerhalb einer Tablerow-Schleife verfügbar sind, finden Sie unter Tablerow (Objekt).
<table> {% tablerow product in collection.products %} {{ product.title }} {% endtablerow %} </table>
<table> <tbody> <tr class="row1"> <td class="col1"> Cooles Shirt </td> <td class="col2"> Alien Poster </td> <td class="col3"> Batman Poster </td> <td class="col4"> Bullseye Shirt </td> <td class="col5"> Ein weiterer Vinyl-Klassiker </td> <td class="col6"> Tolle Jeans </td> </tr> </tbody> </table>
tablerow tag parameters
Legt fest, wie viele Spalten die Tabellen haben sollen.
<table> {% tablerow product in collection.products cols:2 %} {{ product.title }} {% endtablerow %} </table>
<table> <tbody> <tr class="row1"> <td class="col1"> Cooles Shirt </td> <td class="col2"> Alien Poster </td> </tr> <tr class="row2"> <td class="col1"> Batman Poster </td> <td class="col2"> Bullseye Shirt </td> </tr> <tr class="row3"> <td class="col1"> Ein weiterer Vinyl-Klassiker </td> <td class="col2"> Tolle Jeans </td> </tr> </tbody> </table>
Beendet die Schleife tablerow
nach einem bestimmten Index.
{% tablerow product in collection.products cols:2 limit:3 %} {{ product.title }} {% endtablerow %}
Startet die Schleife tablerow
bei einem bestimmten Index.
{% tablerow product in collection.products cols:2 offset:3 %} {{ product.title }} {% endtablerow %}
Legt einen Zahlenbereich fest, der in einer Schleife durchlaufen wird. Der Bereich kann sowohl durch literale als auch durch variable Zahlen definiert werden.
<table> {% tablerow i in (3..5) %} {{ i }} {% endtablerow %} </table> {% assign num = 4 %} <table> {% tablerow i in (1..num) %} {{ i }} {% endtablerow %} </table>