#index
Das Systemobjekt #index steht in Absatzvorlagen zur Verfügung, die von den Absätzen einer CMS_INPUT_CONTENTAREALIST-Eingabekomponente verwendet werden. Anders ausgedrückt: wenn ein Absatz in einer CMS_INPUT_CONTENTAREALIST-Eingabekomponente gerendert wird, ist das Systemobjekt in der referenzierten Absatzvorlage des Absatzes verfügbar.
Wird in einer Absatzvorlage #index verwendet und diese außerhalb von CMS_INPUT_CONTENTAREALIST gerendert, so ist die Rückgabe null. Es wird zusätzlich noch ein Fehler im Vorschau-/Generierungs-Log angezeigt:
ERROR: Expression delivers 'null'
inside of: Template 'commonTemplate' (id=671145)
inside of: $CMS_VALUE(#global.page.body("inhalt"))$ - at 4, 1
inside of: Template 'calSection' (id=749042)
inside of: $CMS_VALUE(#index)$ - at 6, 1
Daher wird empfohlen, vor der Verwendung des Systemobjektes #index zu überprüfen, ob es nicht null ist:
$CMS_IF(!#index.isNull)$
...
$CMS_END_IF$
Das Systemobjekt #index ermittelt, welche Nummer der gerade gerenderte Absatz in der CMS_INPUT_CONTENTAREALIST-Eingabekomponente hat oder anders: der wievielte Absatz gerendert wird. Die Zählung der Absätze beginnt mit 0.
Das Systemobjekt #index steht bei der Ausgabe einer CMS_INPUT_CONTENTAREALIST-Eingabekomponente mit einer $CMS_FOR(...)$-Anweisung nicht zur Verfügung! Die Ausgabe der Anzahl der Absätze in der Eingabekomponente lässt sich aber auch in der Anweisung mit #for.index realisieren: |
$CMS_FOR(w, pt_cal)$
$CMS_VALUE(#for.index + 1)$/$CMS_VALUE(pt_cal.size)$: $CMS_VALUE(w)$
$CMS_END_FOR$
Der Rückgabewert von #index in vom Datentyp: Integer (Ganzzahl).
Beispiele zu #index
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: Nummerierte Ausgabe der Absätze
Definition der CMS_INPUT_CONTENTAREALIST-Eingabekomponente (Formular):
<CMS_MODULE>
<CMS_INPUT_CONTENTAREALIST name="pt_cal">
<LANGINFOS>
<LANGINFO lang="*" label="Content Area List"/>
</LANGINFOS>
</CMS_INPUT_CONTENTAREALIST>
</CMS_MODULE>
Aufruf der Eingabekomponente (HTML-Präsentationskanal):
$CMS_VALUE(pt_cal)$
Definition der Absatzvorlage (Formular):
<CMS_MODULE>
<CMS_INPUT_TEXT name="st_text">
<LANGINFOS>
<LANGINFO lang="*" label="Text"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
</CMS_MODULE>
Nummerierte Ausgabe in der Absatzvorlage (HTML-Präsentationskanal):
<CMS_HEADER />
$CMS_IF(!#index.isNull && !#sectionList.size.isNull)$
$CMS_VALUE(#index + 1)$/$CMS_VALUE(#sectionList.size)$:
$CMS_END_IF$
$CMS_VALUE(st_text)$
<br>
Das Beispiel gibt neben dem Wert der Text-Eingabekomponente noch den Index (um eins erhöht) und die Gesamtanzahl der Absätze aus (z.B. 1/3).
Ausgabe:
1/3: 1. Absatz
2/3: 2. Absatz
3/3: 3. Absatz