Startseite
Startseite

Startseite / Vorlagenentwicklung / Vorlagensyntax / Systemobjekte / #sectionList

#sectionListVerfügbar ab FirstSpirit-Version 4.0

Das Systemobjekt #sectionList steht in den Absatzvorlagen, die von den Absätzen einer CMS_INPUT_CONTENTAREALIST-Eingabekomponente verwendet werden, zur Verfügung. Anders ausgedrückt: wenn ein Absatz in einer CMS_INPUT_CONTENTAREALIST-Eingabekomponente gerendert wird, steht das Systemobjekt in der referenzierten Absatzvorlage des Absatzes zur Verfügung.

Wird in einer Absatzvorlage #sectionList 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("content"))$ - at 4, 1
inside of: Template 'calSection' (id=749042)
inside of: $CMS_VALUE(#sectionList)$ - at 2, 1

Daher wird empfohlen vor der Verwendung des Systemobjekts #sectionList zu überprüfen, ob es nicht null ist:

$CMS_IF(!#sectionList.isNull)$
...
$CMS_END_IF$

Die beiden Einsatzzwecke von #sectionList sind:

  1. Ermitteln, ob der gerenderte Absatz sich in einer CMS_INPUT_CONTENTAREALIST befindet oder nicht
  2. Ermitteln der Anzahl der eingegebenen Absätze in einer CMS_INPUT_CONTENTAREALIST

Wichtig Der Aufruf von $CMS_VALUE(#sectionList)$ (ohne Methodenaufruf) führt zu einer Endlosschleife, die im Vorschau-/Generierungs-Log protokolliert wird:
ERROR: endless loop in template?
inside of: Template 'commonTemplate' (id=749041)
inside of: $CMS_VALUE(pt_cal)$ - at 7, 3
inside of: Template 'calSection' (id=749042)
inside of: $CMS_VALUE(#sectionList)$ - at 2, 1
inside of: Template 'calSection' (id=749042)
inside of: $CMS_VALUE(#sectionList)$ - at 2, 1
...
Wichtig Das Systemobjekt #sectionList 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 .size realisieren:
$CMS_FOR(w, pt_cal)$
$CMS_VALUE(#for.index + 1)$/$CMS_VALUE(pt_cal.size)$: $CMS_VALUE(w)$
$CMS_END_FOR$

Die einzelnen Aufrufe und ihre Bedeutung:

Aufruf

Bedeutung

Rückgabedatentyp

#sectionList.isNull

Ist der gerade gerenderte Absatz Teil einer CMS_INPUT_CONTENTAREALIST-Eingabekomponente oder nicht.

true: der Absatz ist nicht Teil CMS_INPUT_CONTENTAREALIST-Eingabekomponente.
false ist Teil einer CMS_INPUT_CONTENTAREALIST-Eingabekomponente.

Boolean
(Boolescher Wert)

#sectionList.size

Anzahl der Absätze in einer CMS_INPUT_CONTENTAREALIST-Eingabekomponente.

Integer
(Ganzzahl)

   

Beispiele zu #sectionList

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: Numerierte 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

© 2005 - 2014 e-Spirit AG | Alle Rechte vorbehalten. | Letzte Änderung: 2008-01-16