Variablen in FirstSpirit
In FirstSpirit werden
- Inhalte einer Website (z. B. Texte, Bilder, strukturierte Daten aus Datenbanken) getrennt von
- der Struktur (Wie sieht z. B. die Sitemap aus? Wie ist die Hierarchie der einzelnen Webseiten?) und
- der Darstellung (Wie ist z. B. die farbliche Gestaltung der Webseiten? Wie werden Texte und Bilder auf einer Seite angeordnet?)
verwaltet, und zwar in den so genannten „Verwaltungen“. Dieses Konzept erfüllt das Paradigma der Trennung von Inhalt, Struktur und Layout einer Website.
Die Inhalte werden als Werte in Variablen gespeichert. In jeder Verwaltung gibt es Möglichkeiten, Variablen
- zu definieren („Deklaration“) und Werte zuzuweisen („Initialisierung“)
(siehe dazu Abschnitt unten) - miteinander in Beziehung zu setzen (auch verwaltungsübergreifend) und sie zu manipulieren („Operation“)
(siehe dazu Abschnitt unten) - den gespeicherten Wert an der gewünschten Stelle wieder auszugeben
(siehe dazu Abschnitt unten)
Auf diese Weise können die durch die Redakteure eingegebenen Inhalte einfach wiederverwendet und dynamisch (z. B. geknüpft an bestimmte Bedingungen) auf der Website ausgegeben und werden. Operationen ermöglichen dabei – je nach Inhaltstyp – auch eine vorlagenbasierte Modifikation der von Redakteuren eingegebenen Inhalte, d. h. einmal eingegebene (Roh-)Daten können in verschiedenen Formen auf der Website ausgegeben werden, ohne zusätzlichen Aufwand für den Redakteur.
Darüber hinaus gibt es zusätzlich Variablen, die vom System vorgegeben / vorgehalten werden. Diese werden auch als „Systemobjekte“ bezeichnet und sind durch das Zeichen # vor dem Variablennamen gekennzeichnet (z. B. #global). Eine Darstellung der FirstSpirit-Systemobjekte befindet sich im Kapitel Systemobjekte.
Syntax von Variablen
Jede Variable besitzt einen eindeutigen Bezeichner und einen veränderbaren Wert. Der Zugriff auf den Wert einer Variable erfolgt über den eindeutigen Bezeichner. Ein Bezeichner kann aus Buchstaben, Ziffern und Unterstrichen (_) bestehen.
Ein gültiger Variablenbezeichner muss:
- mindestens einen Buchstaben enthalten (Beispiele: a, a1, a_b) oder
- mit einem Unterstrich anfangen und mindestens einen Buchstaben oder eine Ziffer enthalten (Beispiele: _0, _a).
(Beispiele für ungültige Variablenbezeichner: _, __, 12, 12a, a-1)
Ein Minus-Zeichen (-) im Variablenbezeichner ist nicht zulässig! |
Variablenbezeichner sollten nicht nachträglich geändert werden, da sonst bestehende Referenzen im Projekt ungültig werden können, d. h. Beziehungen zwischen Objekten gehen dann verloren. |
Prinzipiell sollte für jede Variable ein projektweit eindeutiger Bezeichner vergeben werden, da sich Variablen sonst „überschreiben“ können. In einigen Fällen kann dies aber auch erwünscht sein. Weitere Informationen dazu siehe auch Kapitel Kontexte.
Um eine bessere Übersicht über die in einem Projekt verwendeten Variablen zu erhalten, wird empfohlen, einen Variablenpräfix in den Bezeichner zu integrieren, an der die Definitionsstelle abgelesen werden kann. Auf diese Weise wird auch gewährleistet, dass Variablen sich nicht überschreiben, z. B.
- gv_: Variable, die global im Projekt verwendet werden soll (z. B. gv_pagetitle)
- pt_: Variable, die in einer Seitenvorlage definiert wird (z. B. pt_pagetitle)
- st_: Variable, die in einer Absatzvorlage definiert wird (z. B. st_text_picture)
- lt_: Variable, die in einer Verweisvorlage definiert wird (z. B. lt_linktext)
- tt_: Variable, die in einer Tabellenvorlage definiert wird (z. B. tt_date)
- md_: Variable, die in einer „Metadatenvorlage“ definiert wird (z. B. md_keywords)
- ps_: Variable, die in einer „Projekteinstellungsvorlage“ definiert wird (z. B. ps_copyright)
- ft_: Variable, die in einer Formatvorlage definiert wird (auch Tabellen-Stilvorlagen)
- gc_: Variable, die in der Seitenvorlage einer Global Content Area (GCA) definiert wird
- sc_: Variable, die in einem Skript definiert wird
- dv_: Variable, die nur für ein Deployment-Ziel definiert wird (Deployment-Value)
- ss_: Struktur-Variable, die in der Struktur-Verwaltung definiert wird (Struktur-Variablen sollten grundsätzlich in der Struktur-Wurzel definiert werden, z. B. ss_shownavigation)
- set_: Temporäre Variable, die in einer CMS_SET-Anweisung definiert wird (durch weiteren Präfix sollte angegeben werden, wo das CMS_SET aufgerufen wird, z. B. set_st_teaserbox)
- for_: Laufvariable, die in einer CMS_FOR-Anweisung definiert wird
Darüber hinaus gibt es einige reservierte Variablenbezeichner, z. B. zur Verwendung der Funktionen (contentSelect, Navigation, MenuGroup, PageGroup usw.), von WebEdit, der sogenannten Inline-Tabellen (siehe dazu auch Systemobjekt #style) usw.
Wo und wie können Variablen deklariert werden?
Variablen können an fast allen Stellen im Projekt deklariert werden. An welcher Stelle eine Variable am besten deklariert werden sollte, leitet sich vom konkreten Anwendungsfall im Projekt ab (siehe dazu auch Kapitel Vorlagenbezogene Kontexte). Wie sie deklariert werden, kann detailliert in entsprechenden Kapiteln nachgelesen werden, die in der folgenden Tabelle angegeben sind.
Wo? | Bedeutung und Einsatzbeispiele |
---|---|
in Vorlagen | Auf dem Formular-Register werden die Eingabekomponenten, das zentrale Bedienelement für Redakteure in FirstSpirit, definiert. Das Attribut name stellt dabei den Variablennamen einer Eingabekomponente dar (siehe Attribut name z. B. in der Eingabekomponente CMS_INPUT_DOM). In der über name definierten Variable wird der Wert, den der Redakteur in die Eingabekomponente eingibt, gespeichert. |
Ebenso können Variablen auch in den Präsentationskanälen definiert werden, und zwar über die Anweisungen
Der Wert wird dabei vom Projektentwickler zugewiesen, Redakteure haben auf diese Variablen keinen Zugriff. | |
in den Metadaten | In der Inhalte-, Medien- und Struktur-Verwaltung sowie in den Globalen Einstellungen können zu jedem Knoten so genannte Metadaten gepflegt werden. Dabei handelt es sich um zusätzliche Informationen, die auf untergeordnete Knoten vererbt werden können. Sie werden in einer Seitenvorlage, die über die Projekteinstellungen (Anwendung zur Server- und Projektkonfiguration) entsprechend definiert wurde, über Eingabekomponenten gepflegt. Bei den Metadaten kann es sich z. B. um Kommentare, aber auch um Informationen zu Benutzerrechten (über die Eingabekomponente CMS_INPUT_PERMISSION) handeln. |
in Menüebenen | Menüebenen der Strukur-Verwaltung können mit Variablen versehen werden. Mit diesen ist ein Zugriff auf Teilbereiche der Navigation möglich, beispielsweise um das Layout zu beeinflussen. Auch Strukturvariablen können auf untergeordnete Menüebenen vererbt werden. So können beispielsweise für unterschiedliche (hierarchische) Bereiche einer Website mithilfe von Strukturvariablen unterschiedliche Designs (Hintergrund-, Schriftfarbe, Buttons, Logos usw.) umgesetzt werden. |
in den Globalen Einstellungen | Im Verwaltungsbereich "Globale Einstellungen" können Inhalte verwaltet werden, die häufig wiederverwendet werden sollen. Das können z. B. Textbausteine sein, die auf jeder Webseite verwendet werden, aber getrennt von anderen Texten einer Seite gepflegt werden sollen, z. B. ein Copyright-Vermerk am Ende einer Seite. Soll ein solcher Textbaustein geändert bzw. aktualisiert werden, braucht auf diese Weise nur der Textbaustein geändert werden, und nicht jede Seite, die diesen Textbaustein verwendet. Diese Inhalte werden in einer Seitenvorlage, die über die Projekteinstellungen (Anwendung zur Server- und Projektkonfiguration) entsprechend definiert wurde bzw. Seiten- und Absatzvorlagen, die in den Globalen Inhalten verwendet werden, über Eingabekomponenten gepflegt. |
in Aufträgen | Im Generierungsauftrag können Variablen gesetzt werden, die bei der Generierung eines Projekts ausgelesen werden. Auf diese Weise können z. B. Variablen, die in Menüebenen definiert wurden, überschrieben werden. Das entsprechende Feld zum Setzen der Variable erreicht man über die Projekteinstellungen in der Anwendung zur Server- und Projektkonfiguration (Menü "Projekt" / "Eigenschaften" / "Auftragsverwaltung" / Register "Aktionen" eines Auftrags / "Erweitert" eines Generierungsauftrags / Bereich "Variablen" / Button "Hinzufügen"). |
Wie können Variablen manipuliert werden?
Mithilfe von
können Variablen je nach Datentyp manipuliert oder mit anderen Variablen in Beziehung gesetzt werden.
Somit können Variablen nur auf dem Präsentationskanal-Register von Vorlagen manipuliert werden.
Wie können Variablen ausgegeben werden?
Die Werte von Variablen können in Präsentationskanälen über die Anweisung $CMS_VALUE(...)$ ausgegeben werden. Referenzen werden mit der Anweisung $CMS_REF(...)$ zu Pfaden aufgelöst:
Ausgabe über $CMS_VALUE(...)$
Der Inhalt oder Wert einer Variablen kann mit der Anweisung $CMS_VALUE(...)$ ausgegeben werden, wobei der Bezeichner innerhalb der Klammer steht.
Hallo $CMS_VALUE(name.vorname)$ $CMS_VALUE(name.nachname)$!
Dabei können innerhalb der Klammern auch erweiterte Ausdrücke ausgewertet werden.
Hallo $CMS_VALUE(name.vorname + " " + name.nachname)$!
Ist eine Variable (im Beispiel z. B. name) nicht definiert oder ist sie Null, wird zu Debugging-Zwecken im Log eine entsprechende Fehlermeldung ausgegeben, z. B. Undefined field oder Undefined variable. Um diese Fehlermeldungen zu unterbinden, kann je nach Anwendungsfall eine isNull- (Methode .isNull()) oder isEmpty-Prüfung (Methode .isEmpty()) durchgeführt werden, z. B. $CMS_IF(!name.isNull)$ $CMS_VALUE(name)$ $CMS_END_IF$ Die Möglichkeiten, über die Funktion isSet(...) zu prüfen, ob eine Variable gesetzt ist, oder über default einen Standardwert zu definieren (z. B. $CMS_VALUE(name, default:"Standardwert")$, siehe Seite $CMS_VALUE(...)$), sollten mit Vorsicht eingesetzt werden, da in diesem Fall Fehlermeldungen unterdrückt werden, was die Fehlersuche („Debugging“) erschwert, und im Fall von isSet eine möglicherweise unerwünschte Ausgabe des Wertes auf der generierten Seite erfolgt. |
Genauere Informationen zum Aufruf von Variablen über $CMS_VALUE(...)$ und einige praktische Beispiele finden sich im Kapitel $CMS_VALUE(...)$.
Ausgabe über $CMS_REF(...)$
Wenn der Inhalt der Variablen den entsprechenden Regeln folgt, kann der Variablenaufruf auch über die Anweisung $CMS_REF(...)$ erfolgen. Bei Verwendung von $CMS_REF(...)$ muss die Variable immer aus zwei Teilen bestehen:
- einem Schlüsselwort, beispielsweise media:, und
- einem Referenznamen aus dem jeweiligem Verwaltungsbereich, beim Schlüsselwort media: also beispielsweise einem Referenznamen eines Mediums aus der Medien-Verwaltung.
Genauere Informationen zum Aufruf von Variablen über $CMS_REF(...)$ und einige praktische Beispiele finden sich im Kapitel $CMS_REF(...)$.