$CMS_FOR(...)$
Verwendung von $CMS_FOR(...)$
Innerhalb einer Vorlage, können abhängig von einer Bedingung, beispielsweise der Breite eines Bildes, unterschiedliche Ausgaben an die entsprechende Stelle einer Seite generiert werden. Bedingte Auswertungen werden durch Verwendung der folgenden Anweisungen ausgeführt:
- $CMS_IF(...)$
- $CMS_SWITCH(...)$
Alternativ lassen sich erstmalig in FIRSTspirit 4.0 auch Schleifen realisieren. Hierfür kann die Anweisung $CMS_FOR(...)$ eingesetzt werden.
Einsatzzwecke für Schleifen sind:
- Ausgabe von Listen und komplexen Elementen
- Iterative Ausführungen von Anweisungen
Die Anweisung $CMS_FOR(...)$ ersetzt die iterative Funktionalität von $CMS_RENDER(...)$! |
Syntax von $CMS_FOR(...)$
Der Grundaufbau einer Schleife mit $CMS_FOR(...)$ sieht wie folgt aus:
$CMS_FOR(BEZEICHNER, OBJEKT)$
SCHLEIFENRUMPF
$CMS_END_FOR$
Innerhalb des Schleifenrumpfes steht dem Benutzer zusätzlich zum Objekt mit dem Variablenname BEZEICHNER auch das Systemobjekt #for zur Verfügung.
Parameter von $CMS_FOR(...)$
Die Anweisung $CMS_FOR(...)$ besitzt zwei Parameter.
Bei dem ersten Parameter BEZEICHNER handelt sich um einen Variablennamen, für die Verwendung im Rumpf der Schleife (SCHLEIFENRUMPF).
Der zweite Parameter OBJEKT ist ein mengenwertiges Element, wie z.B. eine Liste oder aber eine Zahlenmenge oder, allgemein ein Ausdruck .
BEZEICHNER
Bei Bezeichner ist ein Variablenname anzugeben.
Während der Ausführung von $CMS_FOR(...)$ steht dann ein Objekt mit diesem Bezeichner zur Verfügung, welches das aktuelle Objekt (in der Liste) darstellt.
OBJEKT
Für den Parameter OBJEKT kann eine Variable, Konstantenausdruck usw. verwendet werden.
Überlicherweise wird eine Zahlenmenge, Liste oder Map angegeben.
Eine Zahlenmenge wird in "[" und "]" eingefasst. Der Start- und Endwert werden durch zwei Punkte voneinander getrennt:
$CMS_FOR(BEZEICHNER, [STARTWERT .. ENDWERT])$
SCHLEIFENRUMPF
$CMS_END_FOR$
Bei beiden Werten muss es sich um eine Ganzzahl handeln. Alternativ kann auch eine Variable mit einer Zahlenmenge verwendet werden.
Mehrere Werte können zu einer Liste zusammengefasst werden. Innerhalb der Liste kann über die Werte iteriert werden:
$CMS_FOR(BEZEICHNER, [OBJEKT_1, OBJEKT_2, ..., OBJEKT_N])$
SCHLEIFENRUMPF
$CMS_END_FOR$
Außerdem kann durch die Zusammenfassung von Wertepaare zu einer Map ebenfalls über die Elemente iteriert werden:
$CMS_FOR(BEZEICHNER, {SCHLÜSSEL_OBJEKT_1 : WERT_OBJEKT_1, ..., SCHLÜSSEL_OBJEKT_N : WERT_OBJEKT_N})$
SCHLEIFENRUMPF
$CMS_END_FOR$
Weiterführende Informationen zu der Verwendung von Ausdrücken für OBJEKT befinden sich im Unterkapitel Konstanten.
Beispiele zu $CMS_FOR(...)$
Nachfolgend werden einige Beispiele zur Verwendung der Anweisung innerhalb von Vorlagen gezeigt. Die Beispiele sollen die konkrete Auswirkung der Anweisung verdeutlichen und eine Hilfe für den Vorlagenentwickler bei der Erstellung eigener Vorlagen sein.
Für die Verwendung innerhalb eines Projekts, müssen die hier gezeigten Beispiele angepasst werden! Beispielsweise müssen Variablennamen auf die spezifischen Variablennamen des Projekts geändert werden, in dem die Anweisung verwendet werden soll. |
1. Beispiel: Listen
Codebeispiel:
$CMS_FOR(for_wrapper, [1, 3, 5, 7, 9, 11])$
Index $CMS_VALUE(#for.index)$: Wert $CMS_VALUE(for_wrapper)$<br>
$CMS_END_FOR$
Beschreibung:
Im aufgeführten Beispiel wird eine Schleife definiert, die durch die angegebene manuelle Liste, sechsmal durchlaufen wird.
Während eines Durchlauf wird mit dem Systemobjekt #for die Nummer des Durchlaufes (Zählung ab 0) ausgegeben und der Wert des Objektes for_wrapper (während des Durchlaufes).
Ausgabe:
Index 0: Wert 1
Index 1: Wert 3
Index 2: Wert 5
Index 3: Wert 7
Index 4: Wert 9
Index 5: Wert 11
2. Beispiel: Zahlenmenge
Codebeispiel:
$CMS_FOR(for_wrapper, [7 .. 14])$
Index $CMS_VALUE(#for.index)$: Wert $CMS_VALUE(for_wrapper)$<br>
$CMS_END_FOR$
Beschreibung:
In dem Beispiel wird die ganzzahlige Zahlenmenge von 7 bis einschließlich 14 definiert. Die Schleife wird dann für jede Ganzzahl einmal durchlaufen.
Wie in dem vorherigen Beispiel wird der Durchlauf und der Wert ausgegeben.
Ausgabe:
Index 0: Wert 7
Index 1: Wert 8
Index 2: Wert 9
Index 3: Wert 10
Index 4: Wert 11
Index 5: Wert 12
Index 6: Wert 13
Index 7: Wert 14
3. Beispiel: Map
Codebeispiel:
$CMS_FOR(for_wrapper, {"k_1" : "v_1", "k_2" : "v_2", "k_3" : "v_3", "k_4" : "v_4"})$
Index $CMS_VALUE(#for.index)$:<br>
Schlüssel $CMS_VALUE(for_wrapper.key)$ , Wert $CMS_VALUE(for_wrapper.value)$<br><br>
$CMS_END_FOR$
Beschreibung:
Im Beispiel wird eine Map definiert. In der Schleife wird die Nummer des Durchlaufes, sowie der Schlüsselname, als auch der Wert des Schlüssels ausgegeben.
Ausgabe:
Index 0:
Schlüssel k_1 , Wert v_1
Index 1:
Schlüssel k_2 , Wert v_2
Index 2:
Schlüssel k_3 , Wert v_3
Index 3:
Schlüssel k_4 , Wert v_4