Startseite / Vorlagenentwicklung / Vorlagensyntax / Anweisungen / $CMS_IF

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

Verwendung von $CMS_IF(...)$

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_SWITCH(...)$ wird bei $CMS_IF(...)$ jeweils nur ein Ausdruck auf einen Vergleichswert geprüft. Dazu wird innerhalb des Tags eine Bedingung angegeben, die einen Vergleichswert auf "true" oder "false" prüft und die Ausgabe dann abhängig vom ermittelten Wert steuert.

Syntax von $CMS_IF(...)$

Bei Verwendung von $CMS_IF(...)$ muss folgende Syntax eingehalten werden:

$CMS_IF(BEDINGUNG)$
AUSFÜHRUNGSTEIL (ERFÜLLTE BEDINGUNG)
$CMS_END_IF$

Das Codebeispiel beschreibt die einfachste Variation der Anweisung $CMS_IF(...)$. Innerhalb der Anweisung wird eine Bedingung (BEDINGUNG) angegeben, die erfüllt ("wahr") sein muss, damit weitere Anweisungen oder Ausgaben innerhalb des Tags $CMS_IF(...)$ ausgeführt werden.

Die Anweisung kann um ein $CMS_ELSE$-Tag erweitert werden, um weitere Anweisungen oder Ausgaben zu definieren, die ausgeführt werden sollen, wenn der als Bedingung definierte Ausdruck "unwahr" ist:

$CMS_IF(BEDINGUNG)$
AUSFÜHRUNGSTEIL (ERFÜLLTE BEDINGUNG)
$CMS_ELSE$
AUSFÜHRUNGSTEIL (NICHT ERFÜLLTE BEDINGUNG)
$CMS_END_IF$

Über das Tag $CMS_ELSIF(BEDINGUNG)$ können weitere Bedingung innerhalb der bestehenden Anweisung $CMS_IF(BEDINGUNG)$ definiert und so die Anweisung beliebig tief geschachtelt werden:

$CMS_IF(BEDINGUNG_1)$
AUSFÜHRUNGSTEIL (ERFÜLLTE BEDINGUNG_1)
$CMS_ELSIF(BEDINGUNG_2)$
AUSFÜHRUNGSTEIL (ERFÜLLTE BEDINGUNG_2)
$CMS_ELSE$
AUSFÜHRUNGSTEIL (NICHT ERFÜLLTE BEDINGUNG_1 UND BEDINGUNG_2)
$CMS_END_IF$

Im Codebeispiel wird die zweite Bedingung innerhalb der $CMS_ELSIF(BEDINGUNG_2)$ erst ausgewertet, wenn sich die erste Bedingung $CMS_IF(BEDINGUNG_1)$ als "unwahr" herausstellt.

Das $CMS_ELSIF(...)-Tag stellt die Verschmelzung der beiden Tags $CMS_ELSE$ und $CMS_IF(...)$ dar. Das obige Beispiel kann somit auch unter der Verwendung von $CMS_ELSE$ und $CMS_IF(...)$ realisiert werden:

$CMS_IF(BEDINGUNG_1)$
AUSFÜHRUNGSTEIL (ERFÜLLTE BEDINGUNG_1)
$CMS_ELSE$
$CMS_IF(BEDINGUNG_2)$
AUSFÜHRUNGSTEIL (ERFÜLLTE BEDINGUNG_2)
$CMS_ELSE$
AUSFÜHRUNGSTEIL (NICHT ERFÜLLTE BEDINGUNG_1 UND BEDINGUNG_2)
$CMS_END_IF$
$CMS_END_IF$

Die Anweisung $CMS_IF(...)$ ist beliebig um weitere $CMS_ELSE$ und $CMS_ELSIF$-Tags erweiterbar. Auch lassen sich beliebige $CMS_IF(...)$-Anweisungen ineinander schachteln.

Parameter von $CMS_IF(...)$

$CMS_IF(...)$ verfügt nur über einen Parameter: die BEDINGUNG.

Wie eine BEDINGUNG aufgebaut ist und wie die Auswertung erfolgt, ist nachfolgend aufgeführt.

BEDINGUNG

Um eine Bedingung (BEDINGUNG) zu definieren, die der Anweisung $CMS_IF(BEDINGUNG)$ oder $CMS_ELSIF(BEDINGUNG)$ übergeben wird, werden maximal drei Parameter benötigt:

  1. Variable oder Konstante
  2. Operator (optional)
  3. Vergleichsvariable, Vergleichskonstante oder Referenzwert (optional)

Der Ausdruck:

1 == 1

ist damit eine gültige Bedingung, da "1" ein gültige Konstante, "==" ein gültiger Oparator und "1" eine gültige Vergleichskonstante ist.

Dies gilt sinngemäß auch für den folgenden Ausdruck:

a != b

Über eine Bedingung kann der Wert einer Variablen oder Konstanten über einen Operator mit einem weiteren Wert verglichen werden (siehe "Ausdrücke"). Dies ist z. B. dann sinnvoll, wenn der Wert der Variablen a sich innerhalb einer Funktion (z. B. Navigation) ändert, jedoch der Vergleichswert konstant in mehreren Teilbereichen ist.

Zusätzlich gibt es einige Methoden in FirstSpirit, die einen booleschen Wert zurückliefern (z. B. #global.preview). Für Ausdrücke, die einen booleschen Wert zurückliefern, brauchen kein Operator und kein Vergleichswert angegeben werden:

$CMS_IF(#global.preview)$
AUSFÜHRUNGSTEIL (VORSCHAU)
$CMS_ELSE$
AUSFÜHRUNGSTEIL (VERÖFFENTLICHUNG)
$CMS_END_IF$
Wichtig Informationen zur Auswertungsreihenfolge von Ausdrücken sind unter logische Ausdrücke und vergleichende Ausdrücke aufgeführt.

Auswertung

Die Anweisung $CMS_IF(...)$ prüft, ob eine gegebene Bedingung "wahr" oder "unwahr" ist. Der "wahr"-Zweig benötigt keine weiteren Anweisungen und wird in seiner einfachsten Form auch in der Anweisung:

$CMS_IF(a != b)$
Das ist meine Ausgabe!
$CMS_END_IF$

ausgewertet. In dem oben angegebenen Codebeispiel wird aber nur dann eine Ausgabe erzeugt, wenn die Bedingung "wahr" ist.

Soll eine Ausgabe auch stattfinden, wenn die Bedingung "unwahr" ist, wird dazu eine weitere Anweisung $CMS_ELSE$ benötigt

$CMS_IF(a != b)$
Das ist meine Ausgabe!
$CMS_ELSE$
Das ist wohl nicht richtig!
$CMS_END_IF$

Ist a = 1 und b = 2 ist die Bedingung wahr und die Anweisung gibt den Text "Das ist meine Ausgabe!" aus.

Ist a = 1 und b = 1 ist die Bedingung unwahr und die Anweisung gibt den Text "Das ist wohl nicht richtig!" aus.

Beispiele zu $CMS_IF(...)$

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: Ausgabe des Änderungsdatums in der Vorschau

Codebeispiel:

$CMS_IF(#global.preview)$
Änderungsdatum: $CMS_VALUE(#global.page.changeDate.format("yyyy-MM-dd HH:mm"))$
$CMS_END_IF$

Beschreibung:

Das Beispiel gibt in einer Vorschau einer Seite der Inhalte-Verwaltung das Änderungsdatum der Seite aus.

Ausgabe:

Änderungsdatum: 2007-02-19 10:39

bzw. das Änderungsdatum im ISO-Format

2. Beispiel: Vergleich zweier Konstanten

Codebeispiel:

$CMS_SET(set_var1,"A")$
$CMS_SET(set_var2,"B")$
$CMS_IF(set_var1 == set_var2)$
A == B
$CMS_ELSE$
A != B
$CMS_END_IF$

Beschreibung:

Im Beispiel werden zwei Konstanten set_var1 und set_var2 definiert. Die $CMS_IF(...)$-Funktion vergleicht dann set_var1 mit set_var2.

Ausgabe:

Da der Inhalt von set_var1 vom Inhalt von set_var2 abweicht, lautet das Ergebnis:

A != B

3. Beispiel: Modulo-Prüfung in einer Schleife

Codebeispiel:

$CMS_SET(set_compare)$
$CMS_IF((for_val % 2) == 0)$
gerade
$CMS_ELSE$
ungerade
$CMS_END_IF$
$CMS_END_SET$

$CMS_FOR(for_val, [0 .. 10])$
Die Zahl "$CMS_VALUE(for_val)$" ist $CMS_VALUE(set_compare)$
$CMS_END_FOR$

Beschreibung:

Das Beispiel beschreibt die dynamische Modulo-Prüfung in einer Schleife.
Zunächst wird ein Dokumentenfragment set_compare mithilfe von $CMS_SET(...)$...$CMS_END_SET$ definiert. In diesem Fragment wird je nach angegebenem Wert durch eine Modulo-Prüfung ermittelt, ob der Wert "gerade" oder "ungerade" ist.
Die Werte werden von $CMS_FOR(...)$ vorgegeben.
Die angegebene $CMS_FOR(...)$-Schleife ruft das Fragment für jede Ganzzahl von 0 bis 10 auf.

Ausgabe:

Die Zahl "0" ist gerade
Die Zahl "1" ist ungerade
Die Zahl "2" ist gerade
Die Zahl "3" ist ungerade
Die Zahl "4" ist gerade
Die Zahl "5" ist ungerade
Die Zahl "6" ist gerade
Die Zahl "7" ist ungerade
Die Zahl "8" ist gerade
Die Zahl "9" ist ungerade
Die Zahl "10" ist gerade

Eine alternative Realisierung ist auch mit der Methode even():

$CMS_SET(set_compare)$
$CMS_IF(for_val.even)$
gerade
$CMS_ELSE$
ungerade
$CMS_END_IF$
$CMS_END_SET$

$CMS_FOR(for_val, [0 .. 10])$
Die Zahl "$CMS_VALUE(for_val)$" ist $CMS_VALUE(set_compare)$
$CMS_END_FOR$

und ohne Dokumentenfragment möglich:

$CMS_FOR(for_val, [0 .. 10])$
Die Zahl "$CMS_VALUE(for_val)$" ist $CMS_IF(for_val.even)$
gerade
$CMS_ELSE$
ungerade
$CMS_END_IF$
$CMS_END_FOR$

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