Startseite
Startseite

Startseite / Vorlagenentwicklung / Vorlagensyntax / Funktionen / in Anweisungen / if

if(...)Verfügbar ab FirstSpirit-Version 4.0

Mithilfe der if(...)-Funktion kann eine Bedingungsprüfung (in verkürzter Form) vorgenommen werden. Dies ist hilfreich, wenn beispielsweise bei der Pflege von Verweisen geprüft werden soll, ob Verweistext gepflegt ist oder nicht. Ist kein Verweistext vorhanden, kann als Standardtext z. B. „Link“ auf der generierten Seite ausgegeben werden (siehe 4. Beispiel).

Wichtig Die if(...)-Funktion kann innerhalb einer $CMS_VALUE(...)$-Anweisung verwendet werden.

Die allgemeine Syntax von if(...) lautet:

$CMS_VALUE(
if(
BEDINGUNG_1,
BEDINGUNG_WAHR_1,
BEDINGUNG_2,
BEDINGUNG_WAHR_2,
...,
BEDINGUNG_N,
BEDINGUNG_WAHR_N,
BEDINGUNG_UNWAHR
)
)$
Wichtig Die Angabe einer Bedingung (BEDINGUNG_1) und eines Ausführungsteils, bei erfüllter Bedingung (BEDINGUNG_WAHR_1), sind Pflichtangaben. Alle weiteren Angaben sind optional.

BEDINGUNG

Um eine Bedingung (BEDINGUNG) zu definieren, die in der if(...)-Funktion verwendet werden kann, 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“ eine gültige Konstante, „==“ ein gültiger Operator 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_VALUE(
if(
#global.preview,
"AUSFÜHRUNGSTEIL (VORSCHAU)",
"AUSFÜHRUNGSTEIL (VERÖFFENTLICHUNG)"
)
)$
Wichtig Informationen zur Auswertungsreihenfolge von Ausdrücken sind unter logische Ausdrücke und vergleichende Ausdrücke aufgeführt.

Auswertung

Die if(...)-Funktion prüft, ob eine gegebene Bedingung „wahr“ oder „unwahr“ ist. Der „wahr“-Zweig wird durch ein Komma von der Bedingung getrennt.

$CMS_VALUE(
if(
a != b,
"Das ist meine Ausgabe!"
)
)$

Im 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 ein „unwahr“-Zweig benötigt, der durch ein Komma vom „wahr“-Zweig getrennt wird.

$CMS_VALUE(
if(
a != b,
"Das ist meine Ausgabe!",
"Das ist wohl nicht richtig!"
)
)$

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

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

Weiterhin können beliebig viele Bedingung-/„wahr“-Zweige angegeben werden, jedoch nur ein „unwahr“-Zweig. Wenn keine Bedingung zutrifft, wird der „unwahr“-Zweig ausgegeben (falls vorhanden). Trifft eine Bedingung zu, so wird der entsprechende „wahr“-Zweig ausgegeben.

$CMS_VALUE(
if(
a != b,
"Das ist meine Ausgabe!",
a != c,
"Das ist eine weitere Ausgabe!",
"Das ist wohl nicht richtig!"
)
)$

Ist a=1 und b=2 und c=1 trifft die erste Bedingung zu und die Funktion gibt den Text „Das ist meine Ausgabe!“ aus.

Ist a=1 und b=1 und c=2 trifft die zweite Bedingung zu und die Funktion gibt den Text „Das ist eine weitere Ausgabe!“ aus.

Ist a=1 und b=1 und c=1 trifft keine der beiden Bedingungen zu und die Funktion gibt den Text „Das ist wohl nicht richtig!“ aus.

Beispiele zu 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_VALUE(
if(
#global.preview,
"Änderungsdatum: " + #global.page.changeDate.format("yyyy-MM-dd HH:mm")
)
)$

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_VALUE(
if(
set_var1 == set_var2,
"A == B",
"A != B"
)
)$

Beschreibung:

Im Beispiel werden zwei Konstanten set_var1 und set_var2 definiert. Die if(...)-Funktion vergleicht 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_VALUE(
if(
(for_val % 2) == 0,
"gerade",
"ungerade"
)
)$
$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 innerhalb 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_VALUE(
if(
for_val.even,
"gerade",
"ungerade"
)
)$
$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_VALUE(
if(
for_val.even,
"gerade",
"ungerade"
)
)$
$CMS_END_FOR$

4. Beispiel: Prüfung, ob ein Verweistext gepflegt wurde

Codebeispiel:

<a href="$CMS_REF(lt_reference)$">
$CMS_VALUE(
if(
!lt_text.isEmpty, lt_text, "Link"
)
)$
</a>

Beschreibung:

lt_text sei ein Feld zur Aufnahme des Verweistextes eines Verweises. Das Beispiel gibt bei nicht leerem Verweistext-Feld den gesetzten Text aus. Ist das Feld leer, wird stattdessen der Standardtext „Link“ ausgegeben (vgl. auch Datentyp String).

© 2005 - 2014 e-Spirit AG | Alle Rechte vorbehalten. | Letzte Änderung: 2013-03-14