Startseite / Vorlagen (Grundlagen) / Aufbau von Vorlagen / Verweisvorlagen / Beispiele / Interne Verweise
Beispiel: Formular für interne Verweise
Interne Verweise verweisen auf Objekte innerhalb des aktuellen Projekts, beispielsweise Seiten/referenzen, Medien oder Datensätze und ermöglichen damit eine Standardanforderung in Web-Projekten: die Verknüpfung von Objekten innerhalb eines Projekts.
Im Folgenden wird beispielhaft ein Formular und die Syntax für eine entsprechende Ausgabe für einen Verweis vorgestellt, der auf eine andere Seite des Projekts und ggf. auf einen Absatz dieser Seite führt.
Darstellung (SiteArchitect)
Erläuterung
Verwendung | Eingabekomponente im folgenden Code-Beispiel | |
---|---|---|
1. | Auswahl einer Seite aus der Struktur-Verwaltung und ggf. eines Absatzes auf dieser Seite, auf die ein Klick auf den Verweis führen soll. | lt_reference |
2. | Eingabe eines Verweistextes | lt_text |
3. | Eingabe eines optionalen Kommentars, der als Tooltip zum Verweis angezeigt werden kann. | lt_comment |
4. | Auswahl der Sprachversion, in der die Seite geöffnet werden soll. Auf diese Weise ist ein Verweis auf Seiten in einer anderen Sprachversion möglich, z. B. wenn die Seite noch nicht in der Sprache der Ausgangsseite existiert. | lt_language |
Formular
<CMS_MODULE>
<FS_REFERENCE name="lt_reference" hFill="yes" useLanguages="no">
<FILTER>
<ALLOW type="pageref"/>
</FILTER>
<LANGINFOS>
<LANGINFO lang="*" label="Target"/>
<LANGINFO lang="DE" label="Ziel"/>
</LANGINFOS>
<PROJECTS>
<LOCAL name=".">
<SOURCES>
<FOLDER name="root" store="sitestore"/>
</SOURCES>
</LOCAL>
</PROJECTS>
</FS_REFERENCE>
<CMS_INPUT_TEXT name="lt_text" hFill="yes" singleLine="no" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Link text"/>
<LANGINFO lang="DE" label="Verweistext"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
<CMS_INPUT_TEXT name="lt_comment" hFill="yes" singleLine="no" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Comment"/>
<LANGINFO lang="DE" label="Kommentar"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
<CMS_INPUT_COMBOBOX name="lt_language" hFill="yes" singleLine="no" useLanguages="no">
<CMS_INCLUDE_OPTIONS type="language"/>
<LANGINFOS>
<LANGINFO lang="*" label="Language"/>
<LANGINFO lang="DE" label="Sprache"/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
</CMS_MODULE>
Erläuterungen zur Formular-Konfiguration:
Über die Eingabekomponente lt_reference (vom Typ FS_REFERENCE) können mittels der Angabe von
<FILTER>
<ALLOW type="pageref"/>
</FILTER>
nur Seitenreferenzen aus dem aktuellen Projekt ausgewählt werden.
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 das Verweisziel wird in der HTML-Ausgabe über die Verweisvorlage der Wert von lt_reference verwendet, für den Verweistext der Wert von lt_text:
<a href="$CMS_REF(lt_reference)$">$CMS_VALUE(lt_text)$</a>
Um einen im Formular durch den Redakteur gewählten Absatz der Seite (Anker) anzuspringen, wird der Referenzname des gewählten Absatzes über getSectionName ermittelt und mit dem Zeichen # ausgegeben.
Um die Anker-Funktionalität in FirstSpirit nutzen zu können, muss bei Vewendung von FS_REFERENCE in den gewünschten Absatzvorlagen auf dem Register „Eigenschaften“, Bereich „Dateiendung“, das <a>-Tag aktiviert werden. Bei Verwendung von FS_LIST muss der Anker manuell modelliert werden. Siehe dazu Seite FS_LIST, Typ INLINE. |
Kommentare aus dem Feld lt_comment können über das HTML-Attribut title als Tooltip zum Verweis ausgegeben werden.
Schließlich kann noch die über lt_language vom Redakteur gewählte Zielsprache des Verweises ausgelesen und berücksichtigt werden: Dazu wird das Attribut language bei der Auflösung der Referenz verwendet (siehe auch Seite $CMS_REF(...)$). Dieses Attribut erwartet als Wert ein für das Projekt gültiges Sprachkürzel, z. B. DE oder EN. Genau diese kann der Redakteur über die betreffende Combobox im Formular auswählen. Der gewählte und gespeicherte Wert kann über die Methode getKey ausgelesen werden.
Final könnte eine einfache beispielhafte Ausgabe des Verweises folgendermaßen aussehen:
<a href="$CMS_REF(lt_reference, language:lt_language.getKey())$#$CMS_VALUE(lt_reference.getSectionName())$"
title="$CMS_VALUE(lt_comment)$">
$CMS_VALUE(lt_text)$
</a>