Startseite / Vorlagen (Grundlagen) / Aufbau von Vorlagen / Verweisvorlagen / Beispiele / Datensatz-Verweise
Beispiel: Formular für Datensatz-Verweise
FirstSpirit ermöglicht auch Verweise auf Datensätze aus der Datenquellen-Verwaltung. Ein Anwendungsbeispiel ist die Nutzung von Datenbank-Inhalten für Tooltips, z. B. zum Einblenden von Glossartexten zu vom Redakteur als Verweis ausgezeichneten Wörtern oder Texten.
Im Folgenden wird beispielhaft ein Formular und die Syntax für eine entsprechende Ausgabe für einen Datensatz-Verweis vorgestellt. Das Verweisziel ist dabei ein Datensatz einer im Projekt vorhandenen Datenquelle mit Glossarinhalten bzw. eine Spalte eines Datensatzes. Der Text dieser Spalte wird als Tooltip kann zu einem Wort angezeigt werden, wenn der Besucher den Mauszeiger über das Wort hält.
Darstellung (SiteArchitect)
Erläuterung
Verwendung | Eingabekomponente im folgenden Code-Beispiel | |
---|---|---|
1. | Eingabe bzw. Auswahl des Glossarbegriffes | lt_text |
2. | Auswahl eines Datensatzes, dessen Text beim Überfahren des als Verweis ausgezeichneten Wortes als Tooltip angezeigt wird. | lt_reference |
Der für lt_reference in diesem Beispiel verwendete Eingabekomponenten-Typ FS_DATASET kann nicht für den Verweistext verwendet werden, daher ist das Hilfsfeld (unter 1.) notwendig. Es kann auch eine versteckte Eingabekomponente mit preset="copy" und Rückgriffswert verwendet werden. |
Formular
<CMS_MODULE>
<CMS_INPUT_TEXT name="lt_text" hFill="yes" maxInputLength="155" singleLine="no" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Text"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
<FS_DATASET name="lt_reference" allowDelete="no" allowEdit="no" allowNew="no" hFill="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Data record"/>
<LANGINFO lang="DE" label="Datensatz"/>
</LANGINFOS>
<SOURCES>
<CONTENT name="glossar"/>
</SOURCES>
</FS_DATASET>
</CMS_MODULE>
Ausgabe
Im Folgenden werden nur minimale Code-Beispiele vorgestellt, die für eine Verwendung im produktiven Projekt entsprechend angepasst werden müssen. So wurde beispielsweise auf eine Nicht-Leer-Prüfung (z. B. $CMS_IF(!lt_reference.isEmpty)$ verzichtet. Ohne diese kann es im Produktiv-Projekt aber zu Generierungsfehlern kommen. |
Verweise werden in HTML generell mit folgender Syntax ausgegeben:
<a href="[Verweisziel]">[Verweistext]</a>
Für den Verweistext soll in der HTML-Ausgabe der Wert verwendet werden, der in einer CMS_INPUT_DOM-Eingabekomponente markiert wurde und in lt_text gespeichert wird.
Angenommen die Datenquelle, aus der die Glossarinformationen ausgewählt werden sollen, enthält eine Spalte cs_description, in der die Erläuterungen zu den Begriffen gepflegt werden. An die Informationen aus der Spalte gelangt man über die Methode getDataset (siehe Datentyp DatasetContainer) in Verbindung mit getFormData (siehe FirstSpirit Access-API, Paket de.espirit.firstspirit.access.store.contentstore, Interface Dataset und Paket de.espirit.firstspirit.access.store.pagestore, Interface DataProvider) und dem Bezeichner der Eingabekomponente (cs_description). Der Inhalt der Spalte kann dann einfach in einem Tooltip über das title-Tag des Verweises ausgegeben werden:
<a ... title="$CMS_VALUE(lt_reference.dataset.formData.cs_description)$">
Für eine Anzeige des Beschreibungstextes als Tooltip bietet sich eine CMS_INPUT_TEXT- oder CMS_INPUT_TEXTAREA-Eingabekomponente in der Tabellenvorlage (Bezeichner cs_description) an .
Als Verweisziel kann beispielsweise auf eine Seite, auf der die Glossareinträge ausgegeben werden, verwendet werden, in unserem Beispiel eine Seite mit dem Referenznamen glossar. Dabei handelt es sich um eine Content-Projektion (Seite mit eingebundener Datenquelle), siehe dazu auch $CMS_REF(...)$, Parameter contentId.
Mit einem nachfolgenden Zeichen * kann auf einfache Weise visualisiert werden, dass es sich um einen Glossareintrag handelt.
Final könnte eine einfache beispielhafte Ausgabe des Verweises folgendermaßen aussehen:
<a href="$CMS_REF(pageref:"glossar", contentId:lt_reference.dataset.formData.fs_id)$"
title="$CMS_VALUE(lt_reference.dataset.formData.cs_description)$">
<strong>
$CMS_VALUE(lt_text)$
</strong>
</a>*