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“).
Die Verwaltung der Vorlagentypen erfolgt im Bereich beim Unterpunkt . 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 |
|---|---|
|
Die von Welcompose mitgelieferten Vorlagentypen (siehe Abschnitt 7.5.3, „Anwendung“) sind nicht editierbar. |
Sobald man auf den Link klickt, kommt man zum Formular zum Hinzufügen eines neuen Vorlagen-Typs.
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.
Optionaler Beschreibungstext zum Vorlagen-Typ.
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.
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 |
|---|---|
|
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 |
|---|---|
|
Achten Sie darauf, die Backticks ( |
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:
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.
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.
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.