Datensatz-Ausgabe
Inhaltsverzeichnis |
FirstSpirit bietet verschiedene Möglichkeiten, Datensätze aus Datenquellen z. B. auf der Website auszugeben. Je nach Anforderung und Projekt-Aufbau kann die eine oder andere vorteilhafter sein. Zur Erstellung von Datensätzen in FirstSpirit ist eine Tabellenvorlage erforderlich.
über Eingabekomponenten
Über die Eingabekomponenten
- FS_DATASET,
- FS_INDEX (mit DatasetDataAccessPlugin)
können Redakteure Datensätze für eine Ausgabe auswählen. FS_DATASET erlaubt dabei die Auswahl eines Datensatzes, über FS_INDEX können auch mehrere Datensätze ausgewählt werden. Je nach Konfiguration kann der Redakteur mithilfe dieser Eingabekomponenten darüber hinaus nicht nur Datensätze auswählen, sondern auch neue erstellen.
FS_DATASET
Für die Ausgabe eines über FS_DATASET referenzierten Datensatzes gibt es zwei Möglichkeiten:
- Auswahl und Ausgabe des/der gewünschten Datensatzes/Datensätze erfolgt über dieselbe Vorlage („zentral“; ...dataset.entity...).
- Auswahl und Ausgabe des/der gewünschten Datensatzes/Datensätze erfolgt über getrennte Vorlagen („dezentral“). Die Ausgabe erfolgt über die Tabellenvorlage, über die die Datensätze erstellt werden. Die Ausgabe in der Vorlage, über die die Datensätze ausgewählt werden, erfolgt über ein einfaches $CMS_VALUE(...)$ (...dataset.formData...).
1) Im ersten Fall werden einzelne Spalten des Datensatzes mithilfe des Spaltennamens im Datenbank-Schema ausgegeben:
$CMS_VALUE([Bezeichner_der_FS_DATASET_Eingabekomponente].dataset.entity.[Spaltenname])$
Beispiel (Absatzvorlage „st_contact“, Ausgabe von Kontakten in der rechten Marginalspalte):
$CMS_VALUE(st_contact.dataset.entity.Salutation)$
$CMS_VALUE(st_contact.dataset.entity.Firstname)$
$CMS_VALUE(st_contact.dataset.entity.Lastname)$
2) Im zweiten Fall werden die Inhalte der Datensätze über die Tabellenvorlage, über die die Datensätze erstellt werden, ausgegeben:
$CMS_VALUE([Bezeichner_der_Eingabekomponente_Tabellenvorlage])$ </br>
Beispiel:
$CMS_VALUE(cs_salutation)$ $CMS_VALUE(cs_lastname)$ </br>
Bei einer Ausgabe über Tabellenvorlagen sollte darauf geachtet werden, dass nur dynamische Inhalte (also beispielsweise über $CMS_VALUE(...)$, kein statischer Text!) ausgegeben werden, da alle Inhalte auf dem Ausgaberegister einer Tabellenvorlage für jeden auf dieser basierenden Datensatz und somit potenziell mehrfach auf einer Seite ausgegeben werden. |
In der Vorlage, mithilfe derer die Datensätze ausgewählt werden, wird der Inhalt der Eingabekomponente über $CMS_VALUE(...)$ und den Bezeichner der Eingabekomponente ausgegeben:
$CMS_VALUE([Bezeichner_der_FS_DATASET_Eingabekomponente].dataset.formData])$
Beispiel:
$CMS_VALUE(st_dataset.dataset.formData)$
Zu weiteren Informationen siehe auch Datentyp DatasetContainer.
FS_INDEX
Für die Ausgabe von Datensätzen über FS_INDEX (mit DatasetDataAccessPlugin) gibt es zwei Möglichkeiten:
- Auswahl und Ausgabe des/der gewünschten Datensatzes/Datensätze erfolgt über dieselbe Vorlage („zentral“). Die Eingabekomponenten-Bezeichner der Tabellenvorlage, über die die Datensätze erstellt werden, müssen für die Ausgabe bekannt sein. Somit kann die Ausgabe der Daten des Datensatzes unabhängig von der zugrundeliegenden Tabellenvorlage erfolgen. Die Syntax erfordert die Verwendung von $CMS_FOR(...)$.
- Auswahl und Ausgabe des/der gewünschten Datensatzes/Datensätze erfolgt über getrennte Vorlagen („dezentral“). Die Ausgabe erfolgt über die Tabellenvorlage, über die die Datensätze erstellt werden. Die Ausgabe in der Vorlage, über die die Datensätze ausgewählt werden, erfolgt über ein einfaches $CMS_VALUE(...)$.
1) Im ersten Fall werden die Inhalte der ausgewählten Datensätze mithilfe der Anweisung $CMS_FOR(...)$ und der Eingabekomponenten-Bezeichner aus der Tabellenvorlage ausgegeben:
$CMS_FOR([Variable], [Bezeichner_der_Eingabekomponente])$
($CMS_VALUE([Variable].fs_id)$) $CMS_VALUE([Variable].[Bezeichner_der_Eingabekomponente_Tabellenvorlage])$</br>
$CMS_END_FOR$
Beispiel:
$CMS_FOR(_entry, st_list)$
($CMS_VALUE(_entry.fs_id)$) $CMS_VALUE(_entry.cs_salutation)$ $CMS_VALUE(_entry.cs_lastname)$ </br>
$CMS_END_FOR$
Siehe dazu auch die Seiten zu den Datentypen Index und Record.
2) Im zweiten Fall werden die Inhalte der Datensätze über die Tabellenvorlage, über die die Datensätze erstellt werden, ausgegeben:
$CMS_VALUE([Bezeichner_der_Eingabekomponente_Tabellenvorlage])$ </br>
Beispiel:
$CMS_VALUE(cs_salutation)$ $CMS_VALUE(cs_lastname)$ </br>
Bei einer Ausgabe über Tabellenvorlagen sollte darauf geachtet werden, dass nur dynamische Inhalte (also beispielsweise über $CMS_VALUE(...)$, kein statischer Text!) ausgegeben werden, da alle Inhalte auf dem Ausgaberegister einer Tabellenvorlage für jeden auf dieser basierenden Datensatz und somit potenziell mehrfach auf einer Seite ausgegeben werden. |
In der Vorlage, mithilfe derer die Datensätze ausgewählt werden, wird der Inhalt der Eingabekomponente über $CMS_VALUE(...)$ und den Bezeichner der Eingabekomponente ausgegeben:
$CMS_FOR([Variable], [Bezeichner_der_FS_INDEX_Eingabekomponente.values])$
($CMS_VALUE([Variable].formData)$</br>
$CMS_END_FOR$
Beispiel:
$CMS_FOR(_entry, st_list)$
($CMS_VALUE(_entry.fs_id)$) $CMS_VALUE(_entry.cs_salutation)$ $CMS_VALUE(_entry.cs_lastname)$ </br>
$CMS_END_FOR$
über Content-Projektion
Für die Ausgabe von Datensätzen über eine so genannte „Content-Projektion“ (siehe dazu auch Ausgabe der strukturierten Datensätze und Abfragen zur Beeinflussung von Ausgabe-Ergebnissen) wird die gewünschte Datenquelle in der Inhalte-Verwaltung auf der gewünschten Seite eingehängt. Dies erfolgt in der Regel nicht durch den Redakteur selbst, sondern durch den Vorlagen-/Projektentwickler. Diese Projektion enthält grundsätzlich alle Datensätze der gewählten Datenquelle. In der Struktur-Verwaltung (Seitenreferenz, Register „Daten“) kann dann folgendes eingestellt werden:
- Wie viele Datensätze der Datenquelle sollen auf der Seite ausgegeben werden? (Feld „Anzahl der Einträge pro Seite“)
- Sollen die Datensätze auf mehreren und wenn ja, wie vielen Seiten verteilt ausgegeben werden? (Feld „Maximale Seitenanzahl“)
- Über eine Abfrage können die Datensätze gefiltert ausgegeben werden. (Feld „Filterung“)
- Die Datensätze können sortiert nach Spalten der Datenquelle ausgegeben werden. (Feld „Sortierung“)
Der Redakteur kann im Falle einer Content-Projektion die Ausgabe im Prinzip nur über das Anlegen neuer, das Bearbeiten oder Löschen bestehender Datensätze selbst beeinflussen. Er kann in der Regel nicht bestimmen, welche und wie viele Datensätze der Datenquelle auf welcher/welchen Seite/n ausgegeben werden sollen.
Die Ausgabe der Datensätze kann in jeder Tabellenvorlage erfolgen, die mit der im Datenbank-Schema gewünschten Tabelle verbunden ist (Tabellenvorlage, Register „Mapping“, Feld Verbunden mit Tabelle). Die Inhalte der einzelnen Spalten können ausgegeben werden über
- den Bezeichner der betreffenden Eingabekomponente
(nur wenn die Pflege der Datensätze ebenfalls über diese Tabellenvorlage erfolgt, also Formulare definiert sind) - das Systemobjekt #row
Hinweis: Erfolgt die Auswahl der Datensätze über FS_INDEX, wird die gewählte Reihenfolge bei einer Ausgabe über das Systemobjekt #row nicht berücksichtigt.
Beispiel zu 1)
$CMS_VALUE([Bezeichner_der_Eingabekomponente_Tabellenvorlage])$
Beispiel (Ausgabe über eine Tabellenvorlage, Ausgabe eines Datensatzes pro Seite):
$CMS_VALUE(cs_date.format("dd.MM.yyyy"))$</br>
$CMS_VALUE(cs_headline)$
Beispiel zu 2)
$CMS_VALUE(#row.[Spaltenname])$
Beispiel (Ausgabe über eine Tabellenvorlage, Ausgabe von mehreren Datensätzen auf einer Seite):
$CMS_VALUE(#row.Date.format("dd.MM.yyyy"))$</br>
$CMS_VALUE(#row.Headline.convert2)$
Navigation
Wenn die Konfiguration auf dem Register „Daten“ dazu führt, dass mehr als eine Seite generiert wird, werden alle generierten Seiten automatisch in eine Seitengruppe eingebunden, so dass sie über die Funktionalitäten der Seitengruppe referenziert werden können. Mithilfe dieser Funktion kann eine Navigationsmöglichkeit über die erzeugten Seiten erstellt werden.
Rechte, die für Datenquellen vergeben werden (siehe dazu auch Redaktionsrechte (→Handbuch FirstSpirit SiteArchitect)), werden im ContentCreator aus technischen Gründen nicht für Filter (Kontextmenü-Funktion „Filter setzen“, siehe dazu auch Kontextmenü „Extras“ (→Handbuch FirstSpirit SiteArchitect)) berücksichtigt. |
über die Funktion "contentSelect"
Die Funktion contentSelect kann in Seiten- und Absatzvorlagen verwendet werden und bietet die Möglichkeit, Datensätze einer Tabelle eines Datenbank-Schema auszugeben. Die Datensätze können gefiltert und / oder sortiert ausgegeben werden, aber immer nur auf einer Seite. Für die Filterung und Sortierung können Tags und Parameter verwendet werden, die auf der Seite Datenbank-Abfragen erläutert sind.
Der Redakteur kann im Falle einer contentSelect-Funktion die Ausgabe im Prinzip nur über das Anlegen neuer, das Bearbeiten oder Löschen bestehender Datensätze selbst beeinflussen. Er kann in der Regel nicht bestimmen, welche und wie viele Datensätze der Datenquelle auf welcher/welchen Seite/n ausgegeben werden sollen.
Minimal-Konfiguration der Funktion:
<CMS_FUNCTION name="contentSelect" resultname="[Variable]">
<CMS_PARAM name="schema" value="[Name_des_Datenbank-Schemas]" />
<QUERY entityType="[Name_der_Tabelle_im_Datenbank-Schema]"/>
</CMS_FUNCTION>
Beispiel (Absatzvorlage, Ausgabe von Pressemitteilungs-Teasern in den Marginalspalten):
<CMS_FUNCTION name="contentSelect" resultname="cs_press_releases">
<CMS_PARAM name="schema" value="Products" />
<QUERY entityType="Press_Releases"/>
</CMS_FUNCTION>
Die Auswahl, welche Datensätze ausgegeben werden sollen (Filterung), und die Sortierung wird Innerhalb dieser Funktion vorgenommen.
Die Ausgabe der Inhalte der gewünschten Spalten erfolgt außerhalb des <CMS_HEADER>-Bereichs über $CMS_FOR(...)$:
$CMS_FOR([Variable], [resultname_der_Funktion])$
$CMS_VALUE([Variable].[Spaltenname])$<br/>
$CMS_END_FOR$
Beispiel:
$CMS_FOR(_entity, cs_press_releases)$
$CMS_VALUE(_entity.Headline)$<br/>
$CMS_END_FOR$
Zusammenfassung
Verwendung | Ausgabe über $CMS_VALUE(...)$ | |
---|---|---|
FS_DATASET | in allen Vorlagen, die ein Formular-Register bieten | ...[Bezeichner_FS_DATASET_Eingabekomponente].dataset.entity.[Spaltenname]... |
FS_INDEX | in allen Vorlagen, die ein Formular-Register bieten | $CMS_FOR([Variable], [Bezeichner_der_FS_INDEX_Eingabekomponente.values])$ |
Content-Projektion | in Tabellenvorlagen | ...[Bezeichner_der_Eingabekomponente_Tabellenvorlage]... |
contentSelect | in allen Vorlagen, die ein Ausgabe-Register bieten | <CMS_HEADER>-Bereich: |