Startseite / Vorlagenentwicklung / Vorlagensyntax / Anweisungen / $CMS_SWITCH

$CMS_SWITCH(...)$Verfügbar ab FirstSpirit-Version 4.0

Verwendung von $CMS_SWITCH(...)$

Inhaltsverzeichnis

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(...)$

Im Unterschied zur Anweisung $CMS_IF(...)$ wird bei $CMS_SWITCH(...)$ eine Variable auf mehrere mögliche Inhalte geprüft (Fallunterscheidung). Hierbei kann, je nach vorgegebenem Inhalt, ein anderes Ergebnis ausgegeben werden.

Syntax von $CMS_SWITCH(...)$

Der Grundaufbau einer Schleife mit $CMS_SWITCH(...)$ sieht wie folgt aus:

$CMS_SWITCH(OBJEKT)$
STANDARDAUSFÜHRUNGSTEIL
$CMS_CASE(BEDINGUNG_1)$
AUSFÜHRUNGSTEIL_1
$CMS_CASE(BEDINGUNG_2)$
AUSFÜHRUNGSTEIL_2
...
$CMS_CASE(BEDINGUNG_N)$
AUSFÜHRUNGSTEIL_N
$CMS_END_SWITCH$

Der $CMS_SWITCH(...)$-Anweisung wird zur Überprüfung ein OBJEKT übergeben.

Ausdrücke bis zum ersten $CMS_CASE(...)$-Block stellen den Standardfall dar.

Es folgen beliebige $CMS_CASE(...)$-Blöcke mit einer BEDINGUNG und einem AUSFÜHRUNGSTEIL.

Die Auswertung einer $CMS_SWITCH(...)$-Anweisung erfolgt wie folgt:

Die $CMS_CASE(...)$-Blöcke werden nacheinander mit den angegebenen BEDINGUNGEN gegen den Wert von OBJEKT verglichen.

Stimmt die BEDINGUNG mit dem Wert von OBJEKT überein, so wird der AUSFÜHRUNGSTEIL dieses $CMS_CASE(...)$-Blocks ausgeführt.

Stimmen die beiden Werte nicht überein, wird der nächste $CMS_CASE(...)$-Block für den Vergleich herangezogen.

Stimmt die BEDINGUNG keines $CMS_CASE(...)$-Blocks mit dem Wert von OBJEKT überein, so wird der STANDARDAUSFÜHRUNGTEIL ausgeführt.

Eine $CMS_SWITCH(...)$-Anweisung lässt sich daher auch in eine $CMS_IF(...)$-Anweisung umschreiben:

$CMS_SWITCH("wert")$
Standardausgabe
$CMS_CASE("kein_wert")$
Kein Wert
$CMS_CASE("wert")$
Wert
$CMS_END_SWITCH$

ist äquivalent zu:

$CMS_IF("kein_wert".equals("wert"))$
Kein Wert
$CMS_ELSEIF("wert".equals("wert"))$
Wert
$CMS_ELSE$
Standardausgabe
$CMS_END_IF$

Parameter von $CMS_SWITCH(...)$

$CMS_SWITCH(...)$ verfügt nur über einen Parameter: ein OBJEKT.

OBJEKT

Um eine $CMS_SWITCH(...)$-Anweisung zu definieren, ist die Angabe eines Objektes zwingend notwendig:

$CMS_SWITCH("Wert")$
...
$CMS_END_SWITCH$

oder

$CMS_SWITCH(varName)$
...
$CMS_END_SWITCH$

oder

$CMS_SWITCH(varName.toString)$
...
$CMS_END_SWITCH$

Das Objekt kann

sein.

Wichtig Informationen zur Auswertungsreihenfolge von Ausdrücken sind unter logische Ausdrücke und vergleichende Ausdrücke aufgeführt.

Parameter von $CMS_CASE(...)$

Die $CMS_CASE(...)$-Blöcke verfügen ebenfalls über einen Parameter: die BEDINGUNG.

BEDINGUNG

Eine Bedingung kann sowohl

sein.

Beispiele zu $CMS_SWITCH(...)$

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.

Wichtig 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: Sprachabhängige Ausgabe

Codebeispiel:

$CMS_SWITCH(#global.language.abbreviation.toLowerCase)$
Welcome!
$CMS_CASE("de")$
Willkommen!
$CMS_CASE("en")$
Welcome!
$CMS_CASE("fr")$
Bienvenue!
$CMS_END_SWITCH$

Beschreibung:
Dieses Beispiel gibt in einer Vorschau für die Sprache mit dem Kürzel „de“ „Willkommen!“ aus, für „fr“ „Bienvenue!“, für „en“ und für alle anderen Sprachen „Welcome!“.

Ausgabe:

Willkommen!

für die Sprache mit dem Kürzel „de“.

2. Beispiel: Klassenabhängige Ausgabe ("class")

Codebeispiel:

$CMS_SWITCH(_var)$
Unknown
$CMS_CASE(class("java.math.BigInteger"))$
Integer
$CMS_CASE(class("java.lang.String"))$
String
$CMS_END_SWITCH$

Beschreibung:
Die Ausgabe kann auch von der Klasse des über $CMS_SWITCH(...) angegebenen Objekts abhängig gemacht werden. Dazu wird der Klassenname verwendet, z. B.

class("java.math.String")    oder
class("java.math.BigInteger")

Dies entspricht dem Java-Konstrukt „instanceof“ (Typprüfung, z. B. var instanceof java.lang.String).

Handelt es sich bei „_var“ um eine Zeichenkette, z. B.

$CMS_SET(_var, "ABC")$

wird

String

ausgegeben, handelt es sich um eine Ganzzahl, z. B.

$CMS_SET(_var, 123)$

wird

Integer

ausgegeben.

Verkürzt kann eine Prüfung auch über isCase erfolgen, z. B.

$CMS_IF(class("java.lang.String").isCase(_var))$
String
$CMS_END_IF$

© 2005 - 2024 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2024.10 | Datenschutz