Zum Hauptinhalt springen
Ein Template gibt nicht immer dasselbe aus. Drei Werkzeuge helfen dabei, die Ausgabe von Bedingungen abhängig zu machen oder sie innerhalb einer Schleife zu variieren. Die beiden Zählerfamilien unterscheiden sich grundlegend: Die DesignControl-Zähler setzen Sie selbst zurück und erhöhen sie gezielt, um damit Bedingungen zu bauen. Die WS-Zähler laufen nur vorwärts und dienen der Nummerierung.

Bereiche abhängig von Zählerständen anzeigen

Die DesignControl-Zähler DC-Counter1 bis DC-Counter3 stehen bei jedem Seitenaufruf auf 0. Sie lassen sich beliebig oft erhöhen und zurücksetzen. Geprüft wird der Stand mit dem gleichnamigen Bereichs-Tag. Es gibt genau drei Zähler. DC-Counter4 und höher liefern nichts. Im Bereichs-Tag dürfen mehrere Werte stehen, kommagetrennt. {DC-Counter1(0,2,4)} greift bei jedem dieser drei Stände.
Es gibt kein Gegenstück zu _inc. Der Zähler lässt sich nur erhöhen oder auf 0 zurücksetzen, nicht verringern und nicht auf einen bestimmten Wert setzen. Wenn Sie das brauchen, nehmen Sie DC-Int1 bis DC-Int3, die kennen _set, _add und _sub.

Beispiel: die erste verfügbare Produktliste anzeigen

Am Fuß der Produktdetailansicht soll eine Sonderliste stehen. Erste Wahl sind Bought-Together-Produkte. Gibt es keine, sollen Zubehörprodukte erscheinen, und wenn auch die fehlen, ergänzende Produkte. Genau eine der drei Listen soll am Ende dastehen. Der Zähler merkt sich dabei, ob schon etwas ausgegeben wurde.
Der letzte Block erhöht den Zähler nicht mehr. Das ist kein Versehen: Danach wird er nicht mehr abgefragt. Wenn Sie später eine vierte Liste anhängen, müssen Sie das ~DC-Counter1_inc~ dort nachtragen.
Das ~DC-Counter1_inc~ gehört innerhalb der Klammerung, aber vor die Datenschleife. Steht es innerhalb der Schleife, zählt es je Produkt einmal hoch, und der Zähler steht am Ende auf 5 statt auf 1. Für die reine Prüfung auf 0 macht das nichts, für jede genauere Prüfung schon.
Referenz: DC-Counter1…3 · DC-Counter1…3_inc · DC-Counter1…3_reset · CAT-AdvData() · PR-Data Wegweiser: Bought-Together-Produkte anzeigen

Elemente in Schleifen durchnummerieren

Innerhalb einer Schleife braucht jedes Element oft eine eigene Nummer, beispielsweise für eine eindeutige HTML-ID oder für abwechselnde Klassennamen. Dafür gibt es zwei voneinander unabhängige Zähler. Beide stehen bei jedem Seitenaufruf auf 0 und lassen sich nur erhöhen, nicht zurücksetzen. Damit liefern sie über eine ganze Seite hinweg eindeutige Nummern. WS-Counter und WS-Counter2 sind zwei getrennte Zähler. Sie können in derselben Seite beide gleichzeitig verwenden, ohne dass sie sich stören.

Fortlaufende Nummerierung

Eine Galerieansicht soll je Kachel eine eigene Klasse bekommen, damit sich beispielsweise die dritte Spalte anders ansprechen lässt.
Daraus wird category_box_1, category_box_2, category_box_3 und so weiter.

Eindeutige IDs

Eine ID darf auf einer Seite nur einmal vorkommen. In einer Schleife über Gruppierungsprodukte erzeugt der Zähler für jedes Formular eine eigene.
Beachten Sie den Unterschied in diesem Beispiel: Die ID am Formular verwendet WS-CounterInc und erhöht damit den Zähler. Der Aufruf weiter unten verwendet WS-Counter und liest ihn nur. Stünde dort ebenfalls WS-CounterInc, spräche das Skript ein Formular an, das es nicht gibt.

Wechselnde Nummerierung mit Modulo

WS-Counter2 und WS-Counter2Inc nehmen eine Zahl als Argument. Dann wird nicht der Zählerstand ausgegeben, sondern sein Rest bei der Division durch diese Zahl.
Daraus wird abwechselnd category_td_1 und category_td_2, also ein Farbwechsel von Zeile zu Zeile. Der Wertebereich liegt zwischen 1 und dem Argument, beide eingeschlossen. WS-Counter2Inc(3) liefert also 1, 2, 3, 1, 2, 3 und niemals 0. Das weicht von der üblichen Modulo-Rechnung ab, bei der 0 bis 2 herauskäme, und ist genau das, was man für Klassennamen braucht.
Beim Zählerstand 0 liefert das Argument den Höchstwert. ~WS-Counter2(2)~ gibt vor dem ersten Inc also 2 aus, nicht 0. Lesen Sie den Zähler deshalb erst, nachdem Sie ihn mindestens einmal erhöht haben.
Referenz: WS-Counter · WS-CounterInc · WS-Counter2() · WS-Counter2Inc() Materialien: Modulo-Berechnung

Bereiche abhängig von Zeichenketten anzeigen

DC-CompareStringInList prüft, ob eine Zeichenkette in einer Liste von Zeichenketten vorkommt. Beide Angaben unterstützen Tag-in-Tag, Sie können also statt fester Texte auch Tags einsetzen. So blendet ein deutscher Shop für Käufer mit dem Rechnungsland Österreich einen Hinweis auf den österreichischen Shop ein.
Mit mehreren Ländern:
Die Anführungszeichen um die Liste sind Pflicht, sobald sie mehr als einen Wert enthält. Der Tag erwartet genau zwei Parameter. Ohne Anführungszeichen zerlegt der Parser die Liste in einzelne Parameter, und der Tag wird ungültig.
Die äußere Klammerung mit A-CountryISO ist nicht überflüssig. Sie sorgt dafür, dass gar nichts geprüft wird, solange der Kunde noch kein Rechnungsland gewählt hat. Den Tag gibt es nur als Bereichs-Tag und in der verneinten Form. Als Einzeltag liefert er nichts. Referenz: DC-CompareStringInList()

Verwandte Themen