#global und Metainformationen
Auf den Knoten innerhalb der einzelnen Verwaltungsbereiche können Metainformationen hinterlegt werden.
Um auf diese Informationen zurückgreifen zu können, gibt es die Methode .meta(), die auf einem Knoten aufgerufen werden kann. Die Voraussetzung für den Aufruf ist damit ein Knoten aus der Verwaltung. Um einen solchen Knoten zu erhalten, gibt es zwei Möglichkeiten:
- Die Funktion ref(): Liefert den Knoten anhand seines Referenznamens zurück
- Das Systemobjekt #global: Liefert die aktuellen Knoten zurück (siehe auch seitenbezogene #global-Aufrufe)
#global kann u.A. folgende Objekte bzw. Knoten zurückliefern:
- #global.node: Seite, Seitenreferenz, Dokumentengruppen
- #global.page: Seite
- #global.section: Absatz
Auf diesen Objekten kann nun die Methode .meta() aufgerufen werden.
Syntax von .meta()
Der Aufbau der Funktion .meta() sieht wie folgt aus:
$CMS_VALUE(OBJEKT.meta("BEZEICHNER"))$
$CMS_VALUE(OBJEKT.meta("BEZEICHNER", "none"))$
$CMS_VALUE(OBJEKT.meta("BEZEICHNER", "inherit"))$
$CMS_VALUE(OBJEKT.meta("BEZEICHNER", "add"))$
$CMS_VALUE(OBJEKT.meta("BEZEICHNER", "add").toString("TRENNZEICHEN"))$
Die .meta()-Methode besteht aus einem Pflicht- und einen optionalen Parameter.
Die Angabe eines Bezeichners (1. Parameter) ist zwingend - die Ausgabeart (2. Parameter) jedoch nicht. |
Wird die Ausgabeart nicht angegeben, so verhält sich die Methode genauso, als ob die Ausgabeart als none angegeben wurde.
Bezeichner
Der erste Parameter der .meta()-Methode erwartet den Bezeichner einer Eingabekomponente (Parameter name) aus der Seitenvorlage, die für die Pflege von Metainformationen genutzt wird.
Definition einer Text-Eingabekomponente:
<CMS_INPUT_TEXT useLanguages="no" name="meta_text">
<LANGINFOS>
<LANGINFO lang="*" label="Text"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
Ausgabe der Metainformation der Seite in der Inhalte-Verwaltung:
$CMS_VALUE(#global.page.meta("meta_text"))$
Ausgabe der Metainformation einer Seitenreferenz in der Struktur-Verwaltung:
$CMS_VALUE(#global.node.meta("meta_text"))$
Ausgabeart
Es gibt drei unterschiedliche Ausgabearten von Metainformationen:
- none
- inherit
- add
Mit diesen Ausgabearten wird angegeben, wie bei der Ermittlung der Metainformationen die Hierarchie der entsprechenden Verwaltung berücksichtigt werden soll.
none
Bei der Angabe von none wird nur das angegebene Objekt für die Ermittlung der Metainformationen herangezogen. Wurde in der angegebenen Eingabekomponente auf diesem Objekt ein Wert eingegeben, so wird dieser Wert zurückgeliefert, ansonsten wird null zurückgeliefert.
inherit
Im Gegensatz zu none wird bei der Angabe von inherit zwar zunächst auch das angegebene Objekt für die Ermittlung herangezogen. Wird aber in der Eingabekomponente kein Wert angegeben, so wird die Ermittlung für jedes Objekt der Vaterkette bis zur Wurzel der entsprechenden Verwaltung wiederholt. Der erste gefundene Wert wird als Ergebnis zurückgeliefert und die Ermittlung abgebrochen. Wurde kein Wert gefunden, so ist die Rückgabe null.
add
Bei der Angabe von add werden alle Metainformationen der Vaterkette - beginnend mit dem angegebenen Objekt - bis zur Wurzel der entsprechenden Verwaltung als Liste zurückgeliefert (List<Object>).
Diese List kann mithilfe der $CMS_FOR(...)$-Anweisung ausgegeben werden:
$CMS_FOR(m, #global.node.meta("meta_text", "add"))$
$CMS_IF(!#for.isFirst)$,$CMS_END_IF$$CMS_VALUE(m)$
$CMS_END_FOR$
Alternativ kann die Liste auch mit der Methode .toString("TRENNZEICHEN") ausgegeben werden. Als Trennzeichen kann z.B. ; gewählt werden.
$CMS_VALUE(#global.node.meta("meta_text", "add").toString("; "))$
Beispiele
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.
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 der Metainformation von der Wurzel bis zur Seitenrefenz
$CMS_VALUE(#global.node.meta("meta_text", "add").reverse.toString(";"))$
Im Beispiel werden vom aktuellen Objekt - hier eine Seitenreferenz - bis zur Wurzel alle Metainformationen gesammelt. Mit der Methode .reverse wird dann die Reihenfolge der Liste umgekehrt und anschließend die Liste mit einem ; getrennt ausgegeben (.toString(";")).
Exemplarische Ausgabe:
VaterVater;Vater;Knoten