Variablen in Menüebenen (Strukturvariablen)
Variablen können auch auf Ordnern (Menüebenen) innerhalb der Struktur-Verwaltung definiert werden.
Der Einsatz von Strukturvariablen ist immer sinnvoll, wenn Änderungen nur von Teilbaum zu Teilbaum realisiert werden sollen.
Soll beispielsweise für die einzelnen Teilbereiche der Struktur ein unterschiedliches Layout (z. B. eine andere Hintergrundfarbe) verwendet werden, ist das über den Einsatz von Strukturvariablen möglich.
Eine weitere häufig genutzte Möglichkeit ist eine Anpassung der Navigation über Strukturvariablen. Abhängig von der Struktur einer Website kann für jeden Teilbaum festgelegt werden, wie die Navigation auf den jeweiligen Seiten dargestellt werden soll. Dabei können beispielsweise der Ort der Darstellung, die angezeigte Anzahl der expandierten Ebenen oder das gesamte Layout der Navigation variieren.
Definition von Strukturvariablen
Strukturvariablen werden auf Menüebenen (Ordnern) der Struktur-Verwaltung definiert, und zwar auf dem Register "Variablen" (siehe Abb. 1). Dort können Variablen über die zur Verfügung stehenden Icons neu angelegt, gelöscht oder geändert werden. Der Gültigkeitsbereich einer Strukturvariable bezieht sich auf die Menüebene, auf der sie definiert ("initialisiert") wurde, alle Unterordner (solange dort keine eigenen Strukturvariablen gesetzt wurden) und sie hat Auswirkungen auf Inhalte der verbundenen Seiten, Absätze usw. in der Inhalte-Verwaltung. Werden Strukturvariablen auf dem Wurzelknoten der Struktur-Verwaltung definiert, werden sie z. B. auf alle Menüebenen der Struktur-Verwaltung vererbt und erst durch eine erneute Zuweisung auf einer untergeordneten Menüebene überschrieben. Allgemeingültige Strukturvariablen sollten daher immer zuerst auf dem Wurzelknoten der Struktur-Verwaltung definiert und mit einem Standardwert initialisiert werden (siehe dazu auch Abschnitt Vererbung und Unterbrechung).
Strukturvariablen bestehen immer aus einem Namen und einem Wert. Auf der Ebene, auf der die Strukturvariable definiert wurde, wird sie in der Liste der Strukturvariablen in gefetteter Schrift dargestellt (siehe Abb. 2, variable_3)
Bei der Vergabe eines Namens ist zu beachten, dass er nicht nachträglich geändert werden kann. Soll eine Variable einen anderen Namen erhalten, muss dazu die gesamte Variable neu definiert (und die "alte" ggf. gelöscht) werden.
Es sind vier Arten von Werten möglich:
- leerer Wert: Für die Variable wird kein Wert gesetzt (siehe Abb. 2, hier ererbt von übergeordneter Ebene: variable_4).
- manuell eingegebener Wert: Es wird manuell ein Text als Wert eingegeben (siehe Abb. 2, variable_3).
- Referenz aus der Medien-Verwaltung: Über das Medien-Verwaltungs-Icon wird eine Referenz aus der Medien-Verwaltung ausgewählt. In der Liste der Strukturvariablen wird der Wert mit einem vorangehenden media: dargestellt (siehe Abb. 2, variable_5). Im Beispiel wird das Medium "connector_cable" als Strukturvariablen-Wert verwendet.
- Referenz aus der Struktur-Verwaltung: Über das Struktur-Verwaltungs-Icon wird eine Referenz aus der Struktur-Verwaltung ausgewählt. In der Liste der Strukturvariablen wird der Wert mit einem vorangehenden pageref: dargestellt (siehe Abb. 2, variable_6). Im Beispiel wird die Seitenreferenz "mithras_home" als Strukturvariablen-Wert verwendet.
Strukturvariablen können für jede Projektsprache unterschiedliche Werte annehmen.
Verwendung von Strukturvariablen
Der Zugriff auf Strukturvariablen erfolgt innerhalb der Vorlagen meist über die Anweisungen $CMS_VALUE(...)$ oder $CMS_REF(...)$.
Vererbung und Unterbrechung
Wird eine Strukturvariable für eine Menüebene gesetzt (initialisiert), vererbt sie sich automatisch auf alle darunterliegenden Menüebenen (Teilbaum). Werden unterhalb der Menüebene neue Menüebenen angelegt, erhalten sie ebenfalls die gesetzte Strukturvariable. variable_1 in Abb. 2 stellt z. B. eine Strukturvariable dar, die von einer höheren Ebene ererbt wird. Sie wird in der Liste der Strukturvariablen in hellerer Schrift angezeigt.
Wird die Vererbung der Strukturvariable unterbrochen (eine Strukturvariable hat auf äußeren Ebenen denselben Wert, auf inneren einen anderen), muss für die Vererbung des Wertes "manuell" gesorgt werden. Wurde die Vererbung durch Überschreiben eines Wertes (siehe folgenden Absatz) einmal unterbrochen, kann der Wert der übergeordneten Ebene nicht mehr "unverändert" auf einer untergeordneten Ebene verwendet werden. Obwohl die äußeren Ebenen dann denselben Wert haben, wird der Wert auf der unteren Ebene immer wie ein "überschreibender" Wert behandelt, der sich bei Änderungen des Wertes auf der übergeordneten Ebene nicht automatisch anpasst.
Überschreiben von Werten
Soll eine Unterebene bzw. ein Teilbaum einen anderen Wert erhalten als die übergeordnete Ebene, z. B. um für diesen Teilbaum ein abweichendes Verhalten zu erzielen, muss der Wert überschrieben werden: Auf der gewünschten Menüebene wird im Bearbeitungsmodus die gewünschte Strukturvariable in der Liste markiert und das "Bearbeiten"-Icon bzw. die Strukturvariable in der Liste doppelt angeklickt. Der ererbte Wert kann nun geändert und mit "Übernehmen" bzw. "Für alle Sprachen übernehmen" gespeichert werden. In der Liste der Strukturvariablen wird ein solcher überschriebener Wert wie variable_2 in Abb. 2 dargestellt und auf alle darunterliegenden Menüebenen vererbt.
Es kann auch ein leerer Wert gesetzt werden (siehe Abb. 2, variable_4). Dieser wird nicht von darüberliegenden Werten überschrieben.
Das Überschreiben gilt für alle Sprachen, d. h. es kann nicht auf einer Menüebene für eine Sprache manuell ein Wert gesetzt werden und für eine andere Sprache ein Wert von der höherliegenden Ebene ererbt werden.
Strukturvariablen können auch durch Auftragsvariablen überschrieben werden (siehe dazu Kapitel Kontexte, speziell die Seite Spezielle Variablen-Eigenschaften). Allerdings nur Strukturvariablen auf der Wurzelknoten-Ebene der Struktur-Verwaltung. |
Löschen und Zurücksetzen von Strukturvariablen
Mithilfe des "Löschen"-Icons können Strukturvariablen komplett gelöscht werden, aber immer nur auf der Ebene, auf der sie gesetzt (initialisiert) wurden (z. B. Abb. 2, variable_3).
- Die Sturkturvariable wird dann auch auf allen untergeordneten Ebenen gelöscht, die den Wert unverändert geerbt haben (nicht überschrieben) (z. B. Abb. 2, variable_1).
- Wurde der Wert auf einer darunterliegenden Ebene verändert (überschrieben) (z. B. Abb. 2, variable_2), wird die Strukturvariable auf der Ebene nicht gelöscht. Sie wird zu einer "initialisierten" Strukturvariable (z. B. Abb. 2, variable_3). Wird später auf höherer Ebene wieder eine Variable mit demselben Namen definiert, wird auch die Vererbung wiederhergestellt.
Das "Löschen"-Icon kann auch auf Ebenen verwendet werden, auf denen ein initialisierter Wert überschrieben wurde (z. B. Abb. 2, variable_2).
- In diesem Fall wird der Wert dieser Ebene auf den Wert der nächst höheren Ebene "zurückgesetzt", die Vererbung und die automatische Anpassung des Wertes an den der nächst höheren ist damit wiederhergestellt. Eine solche "zurückgesetzte" Strukturvariable wird wieder wie variable_1 in Abb. 2 dargestellt.
Beispiel
Ist die Struktur-Verwaltung beispielsweise wie in Abb. 3 dargestellt aufgebaut, kann der Strukturvariable "ss_navVar", die auf dem Wurzelknoten der Struktur-Verwaltung mit dem Wert "_DEFAULT" initialisiert wurde, für jede Menüebene unterhalb der Menübenene "navigation" ein anderer Wert zugewiesen werden.
Strukturvariablen Abb. 3
- Auf der Strukturwurzel wird der Wert "_DEFAULT" für die Strukturvariable "ss_navVar" initialisiert.
- Der Wert "_DEFAULT" wird auf alle untergeordneten Menüebenen vererbt. Auf der Ebene "navigation" ist der Wert der Strukturvariablen "ss_navVar" damit weiterhin "_DEFAULT".
- Die untergeordneten Menüebenen sollen nun jeweils unterschiedlich dargestellt werden. Auf der Menüebene "a" wird beispielsweise der Wert von "ss_navVar" durch "a_value" überschrieben.
- Auf der untergeordneten Menüebene "a_1" wird der Wert "a_value" durch "a_1_value" überschrieben.
- Analog dazu wird für "a_2" und "a_3" ebenfalls ein anderer Wert definiert.
Die Zuweisung einer neuen Strukturvariable erfolgt im rechten Bearbeitungsfenster des FirstSpirit SiteArchitects unter dem Register "Variablen" (siehe Abb. 4).
Wird per $CMS_VALUE(...)$ beispielsweise im Ausgabekanal einer Seitenvorlage innerhalb einer Navigationsfunktion auf den Wert der Variable "ss_navVar" zugegriffen
$CMS_VALUE(#nav.data("ss_navVar"))$
wird die Navigation nun abhängig vom Wert unterschiedlich dargestellt:
Strukturvariablen Abb. 5
Für den Wert "_DEFAULT" werden beispielsweise nur die direkt untergeordneten Menüebenen angezeigt, für den Wert "a_value" die direkt übergeordneten und direkt untergeordneten Menüebenen und für den Wert "a_1_value" die vollständig expandierte Navigation ausgehend vom ersten Element.
Das vorgestellte Beispiel kann damit folgendermaßen dargestellt werden (siehe Abb. 3), wobei jeweils das "fett" dargestellte Element selektiert wurde.