7.5. Vorlagentypen

7.5.1. Einführung

Die Vorlagentypen regeln innerhalb von Welcompose, für welche Art von Seite (beispielsweise Blog-Archiv, ein Formular oder ein Seitenfragment) eine Vorlage dient. Ein Vorlagen-Typ ist somit so etwas wie der "Dateiname" der Vorlage und dient im Kombination mit den Vorlagengruppen (siehe Abschnitt 7.4, „Vorlagengruppen“) dazu, Vorlagen zu organisieren (siehe auch Abschnitt 7.5.3.3, „Vorlagen in Vorlagen integrieren“).

7.5.2. Verwaltung

Die Verwaltung der Vorlagentypen erfolgt im Bereich Vorlagen beim Unterpunkt Vorlagentypen. Die Übersicht listet die vorhandenen Vorlagentypen zusammen mit dem Namen und einer allenfalls vorhandenen Beschreibung. Dazu werden ein Link zum Erstellen, Bearbeiten und Löschen eines vorhandenen Vorlagen-Typs geboten.

[Anmerkung] Anmerkung

Die von Welcompose mitgelieferten Vorlagentypen (siehe Abschnitt 7.5.3, „Anwendung“) sind nicht editierbar.

Abbildung 7.8. Übersicht über vorhandenen Vorlagentypen

Übersicht über vorhandenen Vorlagentypen

Sobald man auf den Link Neu anlegen klickt, kommt man zum Formular zum Hinzufügen eines neuen Vorlagen-Typs.

Abbildung 7.9. Neuen Vorlagen-Typ hinzufügen

Neuen Vorlagen-Typ hinzufügen

Name

Name des Vorlagen-Typs, der zur Auswahl des Vorlagen-Typs und zu dessen Zuordnung zu einer Vorlage dient. Darf aus grossen und kleinen Buchstaben, Ziffern und Unterstrichen bestehen. Eigene Vorlagentypen werden vorteilhafterweise mit einem Prefix wie custom_ versehen, damit keine Probleme entstehen, sollte ein Welcompose-Update einen Vorlagen-Typ mit demselben Namen mitbringen.

Beschreibung

Optionaler Beschreibungstext zum Vorlagen-Typ.

7.5.3. Anwendung

7.5.3.1. Welcher Vorlagen-Typ für welche Ansicht

Welcompose verfügt über etliche von vordefinierten Vorlagentypen, doch welcher Vorlagen-Typ wird für welche Ansicht benötigt?

Tabelle 7.1. Liste der Vorlagen Typen

Vorlagen-Typ Beschreibung Seiten-Typ URL-Action
blog_archive_month Monatsarchiv einer Blog-Seite WCOM_BLOG ArchiveMonth
blog_archive_year Jahresarchiv einer Blog-Seite WCOM_BLOG ArchiveYear
blog_atom10 ATOM-1.0-Feed mit aktuellen Blog Postings WCOM_BLOG Atom10
blog_comments_atom10 ATOM-1.0-Feed mit aktuellen Kommentaren zu Blog Postings WCOM_BLOG CommentsAtom10
blog_comments_rss20 RSS-2.0-Feed mit aktuellen Kommentaren zu Blog Postings WCOM_BLOG CommentsRss20
blog_index Übersichtsseite über die aktuellen Blog Postings ("Startseite") WCOM_BLOG Index
blog_item Ansichtsseite für ein einzelnes Blog Posting WCOM_BLOG Item
blog_podcast_itms Feed aktueller Podcasts nach iTunes-Format WCOM_BLOG PodcastItms
blog_rss20 RSS-2.0-Feed mit aktuellen Blog Postings WCOM_BLOG Rss20
event_atom10 ATOM-1.0-Feed einer Event Einträgen. WCOM_EVENT Atom10
event_index Übersichtsseite der Einträge auf einer Seite vom Typ Event. WCOM_EVENT Index
event_rss20 RSS-2.0-Feed einer Event Einträgen. WCOM_EVENT Rss20
generator_form_index Stellt ein Generator-Formulars dar WCOM_GENERATOR_FORM Index
generator_form_mail E-Mail, das von einem Generator-Formular versendet wird. WCOM_GENERATOR_FORM -
simple_date_atom10 ATOM-1.0-Feed einer Simple Dates Übersicht. WCOM_SIMPLE_DATE Atom10
simple_date_index Dient zur Darstellung einer Seite vom Typ Simple Dates. WCOM_SIMPLE_DATE Index
simple_date_rss20 RSS-2.0-Feed einer Simple Dates Übersicht. WCOM_SIMPLE_DATE Rss20
simple_form_business_form_mail E-Mail, das von einem Simple Form versendet wird, wenn es als Geschäftsformular betrieben wird. WCOM_SIMPLE_FORM -
simple_form_index Dient zur Darstellung eines Simple Forms. WCOM_SIMPLE_FORM Index
simple_form_personal_form_mail E-Mail, das von einem Simple Form versendet wird, wenn es als privates Formular betrieben wird. WCOM_SIMPLE_FORM -
simple_guestbook_form_mail E-Mail, das von einem Simple Guestbook verwandt wird, wenn die Option "Send Notification" aktiv ist. WCOM_SIMPLE_GUESTBOOK -
simple_guestbook_index Dient zur Darstellung eines Simple Guestbook. WCOM_SIMPLE_GUESTBOOK Index
simple_page_index Für die Anzeige einer einfachen Inhaltsseite. WCOM_SIMPLE_PAGE Index
system_login Generische Vorlage für alle Seitentypen, die für den Login einer geschützten Seite verwendet wird. Die Vorlage wird, sofern der Besucher noch nicht angemeldet ist, anstelle der eigentlichen Vorlage angezeigt. Wenn der Benutzer bereits angemeldet ist, kriegt er diese Vorlage nicht zu Gesicht. WCOM_SIMPLE_PAGE - (alle)

Die Spalte "Vorlagen-Typ", listet die jeweiligen Vorlagentypen, wie sie standardmässig von Welcompose mitgebracht werden. Eine kurze Erklärung des Einsatzzwecks bietet die Spalte mit der Beschreibung. In der Spalte "Seitentyp" steht, zu welchem Seitentyp der Vorlagen-Typ gehört. Die letzte Spalte "URL-Action" listet den jeweiligen Wert für den Parameter action im URL zum Seitenaufruf, der diesen Vorlagen-Typ verlangt. Mit seiner Hilfe lässt sich herausfinden, welche Vorlage für einen bestimmten Seiten-URL geladen wird.

Bei einem URL wie

index.php?project_name=demo&action=ArchiveMonth&posting_year_added=2007&posting_month_added=06

ist der Wert für action ArchiveMonth, der, wie die Tabelle zeigt, die Verwendung einer Vorlage vom Typ blog_archive_month impliziert.

Bei der URL-Action Index, die mehreren Vorlagentypen zugeordnet ist, kann man nicht nur nach der URL-Action gehen, sondern muss gleichzeitig noch den jeweiligen Seitentyp einbeziehen, um den richtigen Vorlagen-Typ zu einem URL zu finden. Handelt es sich um eine Blog-Seite, die aufgerufen wird, wird eine Vorlage vom Typ blog_index benötigt. Handelt es sich um eine Simple Page, wird eine Vorlage vom Typ simple_page_index benötigt.

7.5.3.2. Vorlagen referenzieren

Wie in Abschnitt 7.2, „Funktionsweise des Vorlagensystems“ bereits erwähnt, benötigt Welcompose zwei Informationen, um die richtige Vorlage für die Anzeige einer Seite auszuwählen:

  • Die ID der aufzurufenden Seite.

  • Den Typ der gewünschten Vorlage.

Mit Hilfe der Seiten-ID weiss Welcompose, in welchem Vorlagengruppe nach der Vorlage gesucht werden muss. Und der Vorlagen-Typ sagt Welcompose schlussendlich, welche Vorlage aus dem Vorlagengruppe genommen werden muss.

Wenn man also irgendwo innerhalb einer Vorlage (bei {include}) oder innerhalb von PHP-Code (bei den Smarty-Methoden fetch() und display()) eine Vorlage von Smarty anfordert, müssen diese zwei Informationen angegeben werden.

Dabei muss man ein spezielles Format einhalten. Einerseits muss ein sogenannter Resource Type (wcom:) angegeben werden, damit Smarty weiss, aus welcher Quelle die Vorlagen bezogen werden sollen. Andererseits müssen der Vorlagen-Typ und die Seiten-ID so zusammengesetzt werden, dass sich ein gültiger Vorlagen-Name ergibt. Daraus ergibt sich folgendes Format:

wcom:simple_page_index.7

Dabei ist wcom: der Resource Type und simple_page_index.7 der Vorlagen-Name, der sich aus dem Vorlagen-Typ simple_page_index und der Seiten-ID 7 zusammensetzt.

[Anmerkung] Anmerkung

Das Format ist immer identisch und ist für alle Vorlagen gültig – nicht aber für Vorlagen, die direkt von der Festplatte gelesen werden (wie beispielsweise Globale Dateien und/oder Globale Vorlagen).

Am häufigsten werden Vorlagen wohl innerhalb von anderen Vorlagen angefordert. Ein einfaches Beispiel könnte etwa so aussehen:

{include file="wcom:custom_navigation.7"}

Auf diese Weise wird die Vorlage des Typs custom_navigation aus dem Vorlagengruppe ausgelesen, der mit der Seite mit der ID 7 verbunden ist. Allerdings wird kaum einmal direkt mit den Seiten-IDs gearbeitet, da die Vorlagen ja für möglichst viele Seiten einsetzbar sein sollen. Da bietet es sich an, die Seiten-ID durch eine Variable auf die jeweils aktuelle Seiten-ID setzen zu lassen. Alle Seiten respektive Ansichten innerhalb von Welcompose bieten zu diesem Zweck die Variable $page.id, welche immer die ID der jeweils aktuellen Seite enthält. Die universelle Variante von {include file="wcom:custom_navigation.7"} würde damit so aussehen:

{include file="wcom:custom_navigation.`$page.id`"}

(siehe auch Abschnitt 7.5.3.3, „Vorlagen in Vorlagen integrieren“)

[Anmerkung] Anmerkung

Achten Sie darauf, die Backticks (`) um die Variable zu setzen. Ansonsten wird nicht der Wert von $page.id eingesetzt und die Seite kann nicht gefunden werden.

7.5.3.3. Vorlagen in Vorlagen integrieren

Die meisten Vorlagen, die man für eine Webseite benutzt, haben grössere oder kleinere Teile gemeinsam, die also in jeder Vorlage identisch sind. Ein Beispiel sind Navigationen. Statt sie in jeder Vorlage separat zu implementieren, wäre es viel praktischer, wenn man diese Fragmente nur einmal implementieren müsste und in jeder Vorlage, wo sie vorkommen, automatisch einbinden lassen könnte.

Smarty ermöglicht dies mittels sogenannten Includes, bei denen mit der Funktion {include} andere Vorlagen in die aktuelle Vorlage automatisch integriert werden können.

Um eine (Teil-)Vorlage zu erstellen, die mit Hilfe von {include} in eine andere Vorlage integriert werden kann, sind mehrere Schritte nötig:

  1. Legen Sie einen neuen Vorlagen-Typ an, dem später die einzubindende Vorlage zugewiesen werden kann. Wenn Sie die Webseiten-Navigation auslagern wollen, kann der Vorlagen-Typ beispielsweise custom_navigation heissen.

  2. Fügen Sie das auszulagernde Fragment, in diesem Fall also die Navigation, in eine neue Vorlage ein, der Sie den Vorlagen-Typ custom_navigation zuweisen. Weisen Sie die neue Vorlage zudem der Vorlagengruppe zu, in denen sie zum Einsatz kommen soll.

  3. Ersetzen Sie nun den Code für das ausgelagerte Fragment, also die Navigation, in allen Vorlagen mit der Referenz auf das ausgelagerte Fragent:

    {include file="wcom:custom_navigation.`$page.id`"}
    

    Sobald Sie die Vorlage abgespeichert und die zugehörige Seite aufgerufen haben, sollten Sie die Navigation an ihrer bekannten Stelle anstatt der Referenz sehen.

Soll ein weiteres Fragment ausgelagert werden, ist dies problemlos möglich. Es muss einfach ein anderer Name für den Vorlagen-Typ gewählt werden. Soll beispielsweise ein Seiten-Fuss in einer separaten Vorlage untergebracht werden, würde sich beispielsweise der Name custom_footer anbieten. Entsprechend müsste auch die Referenz in {include} angepasst werden.