Startseite / Vorlagenentwicklung / Vorlagensyntax / Systemobjekte / #fs_catalog

#fs_catalog

Das Systemobjekt #fs_catalog steht in den Vorlagen, die von den Elementen einer FS_CATALOG-Eingabekomponente verwendet werden, zur Verfügung. Anders ausgedrückt: wenn ein Absatz oder ein Verweis in einer FS_CATALOG-Eingabekomponente gerendert wird, steht das Systemobjekt in der referenzierten Absatz- bzw. Verweisvorlage zur Verfügung.

Wird in einer Vorlage #fs_catalog verwendet und diese außerhalb von FS_CATALOG gerendert, so ist die Rückgabe null. Dies wird als Fehler im Vorschau-/Generierungs-Log protokolliert. Daher wird empfohlen, vor der Verwendung des Systemobjekts #fs_catalog zu überprüfen, ob es nicht null ist:

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

Die beiden Einsatzzwecke von #fs_catalog sind:

  1. Ermitteln, ob sich das gerenderte Element in einer FS_CATALOG-Eingabekomponente befindet oder nicht
  2. Ermitteln der Anzahl der in einer FS_CATALOG-Eingabekomponente enthaltenen Elemente

Wichtig Der Aufruf von $CMS_VALUE(#fs_catalog)$ (ohne Methodenaufruf) führt zu einer Endlosschleife, die im Vorschau-/Generierungs-Log protokolliert wird (ERROR: endless loop in template?).
Wichtig Das Systemobjekt #fs_catalog steht bei der Ausgabe einer FS_CATALOG-Eingabekomponente mit einer $CMS_FOR(...)$-Anweisung nicht zur Verfügung! Die Ausgabe der Anzahl der Elemente in der Eingabekomponente lässt sich aber auch in der Anweisung mit .size realisieren:
$CMS_FOR(card, st_catalog)$
$CMS_VALUE(#for.index + 1)$/$CMS_VALUE(st_catalog.size)$: $CMS_VALUE(card)$
$CMS_END_FOR$

Die einzelnen Aufrufe und ihre Bedeutung:

Aufruf

Bedeutung

Rückgabedatentyp

#fs_catalog.isNull

Ist das aktuell gerenderte Element Teil einer FS_CATALOG-Eingabekomponente oder nicht.
true: das Element ist nicht Teil einer FS_CATALOG-Eingabekomponente.
false: das Element ist Teil einer FS_CATALOG-Eingabekomponente.

Boolean
(Boolescher Wert)

#fs_catalog.size

Anzahl der Elemente in einer FS_CATALOG-Eingabekomponente.

Integer
(Ganzzahl)

   

Beispiele zu #fs_catalog

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: Nummerierte Ausgabe von Absätzen

Definition der FS_CATALOG-Eingabekomponente (Formular):

<CMS_MODULE>
<FS_CATALOG name="st_catalog">
<LANGINFOS>
<LANGINFO lang="*" label="Section list"/>
</LANGINFOS>
<TEMPLATES type="section">
<TEMPLATE uid="text"/>
</TEMPLATES>
</FS_CATALOG>
</CMS_MODULE>

Aufruf der Eingabekomponente (HTML-Vorlagensatz):

$CMS_VALUE(st_catalog)$

Definition der Absatzvorlage („text“, 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-Vorlagensatz):

<CMS_HEADER />
$CMS_IF(!#index.isNull && !#fs_catalog.size.isNull)$
$CMS_VALUE(#index + 1)$/$CMS_VALUE(#fs_catalog.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 - 2024 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2024.12 | Datenschutz