Zum Hauptinhalt springen
Die meisten Schleifen im Shop laufen von selbst: {@PR-Data} durchläuft die Produkte einer Kategorie, {@BASKET-PR-Data} die Positionen im Warenkorb. Manchmal brauchen Sie aber eine Schleife, für die es kein fertiges Tag gibt, beispielsweise fünf Bewertungssterne oder eine Liste, die Sie selbst zusammenstellen. Dafür gibt es drei Schleifenfamilien. Der Unterschied zwischen DC-Loop und DC-ZeroLoop ist allein die Zählweise. Bei fünf Durchläufen liefert DC-Loop1_position die Werte 1 bis 5, DC-ZeroLoopX_position die Werte 0 bis 4. Nehmen Sie DC-ZeroLoop, wenn die Position als Index in eine andere Zählung eingeht, die bei 0 beginnt.

Der Aufbau einer eigenen Schleife

Jede der drei Familien wird nach demselben Muster benutzt.
Die äußere Klammerung ist kein Selbstzweck. Sie greift nur, wenn die Anzahl größer als 0 ist, und hält damit Überschriften, Tabellenrahmen und Listengerüste aus der Seite heraus, wenn es nichts zu zeigen gibt.

Eine feste Anzahl Durchläufe

DC-Loop1_set() legt die Anzahl fest. Das Argument ist Tag-in-Tag-fähig, die Anzahl kann also aus einem anderen Tag kommen.
Ein negativer Wert wird zu 0, ein sehr großer Wert wird nach oben gekappt. Die Schleife bricht also nicht ab, sondern läuft still mit einer anderen Anzahl als gedacht. Prüfen Sie den Wert, wenn er aus einer Datenquelle stammt.

DC-ZeroLoop

DC-ZeroLoopX funktioniert genauso, zählt aber ab 0.
Anders als bei DC-Loop ist das X bei DC-ZeroLoop kein Platz für eine Ziffer von 1 bis 3, sondern ein frei wählbarer Name, genau wie bei den freien Parametern. DC-ZeroLoopSpalten und DC-ZeroLoopZeilen sind zwei unabhängige Schleifen. Höchstens 50 verschiedene Namen sind je Seitenaufruf möglich, darüber hinaus legt der Shop keine weitere Schleife mehr an und schreibt einen kritischen Fehler ins Protokoll.

Eine eigene Liste durchlaufen

DC-DynamicLoop1…3 bekommt eine Liste übergeben und durchläuft deren Einträge.
Als Argument von _set() sind zulässig: eine feste Liste im Template, ein anderes Tag als Tag-in-Tag oder eine Textvariable.
Leere Einträge entfallen, und Leerzeichen am Anfang und Ende jedes Eintrags werden abgeschnitten. Aus a, ,b , c werden also die drei Einträge a, b und c.
_set() darf nicht innerhalb der eigenen Schleife stehen. Der Shop verwirft das Tag in diesem Fall. Setzen Sie die Liste vor {DC-DynamicLoop1}.
Für die Liste selbst gilt die 128-Zeichen-Grenze der WEBSALE-Tags nicht, sofern sie über Tag-in-Tag hereinkommt. Steht sie als fester Text im Tag, gilt die Grenze sehr wohl. Bauen Sie lange feste Listen deshalb mit DC-FPX_append() zusammen und übergeben Sie sie als Tag-in-Tag. Referenz: DC-FPX_append

Ein anderes Trennzeichen

Wenn die Einträge selbst Kommas enthalten, brauchen Sie ein anderes Trennzeichen. _setseparator() legt es fest.
_setseparator() muss vor _set() stehen. Danach gesetzt, hat es keine Wirkung mehr, weil die Liste zu diesem Zeitpunkt bereits zerlegt ist.
Das Trennzeichen darf auch mehrere Zeichen lang sein, beispielsweise ||. Groß- und Kleinschreibung spielt dabei keine Rolle.

Einträge mit Markierungen

Kommt die Liste aus einem Fremdsystem und sind die Einträge dort von Markierungen umschlossen statt durch ein Zeichen getrennt, verwenden Sie _setSeparatorTags() und _settaggeddata().
Auch hier gilt die Reihenfolge: _setSeparatorTags() legt die beiden Markierungen fest und muss vor _settaggeddata() stehen.
_settaggeddata() unterstützt Tag-in-Tag. Damit lässt sich die Antwort einer Schnittstelle direkt in eine Schleife überführen, ohne sie vorher umzuformen.

Die Tags im Überblick

Zulässig sind alle Tags auf allen Templates. _data und _position geben nur innerhalb der zugehörigen Schleife etwas aus.

Verwandte Themen