mit dem Jaegers.Net Template Generator
Template Erstellung
Aufruf
Der Template Generator wird über die Datei index.php im Hauptverzeichnis aufgerufen. Wurde das Tool also z.B. in das Verzeichnis tg installiert, so erreichen Sie den Template Generator über
www.ihrserver.tld/tg/index.php?password=secure
wobei www.ihrserver.tld durch Ihren Servernamen zu ersetzen ist. Der Aufruf erfolgt hier unter Angabe des in der config.php gesetzten Passwortes. Ist das Kennwort falsch angegeben, so bricht das Skript ab und meldet den Aufruf mit falschem Passwort zurück.
Auf diese Weise kann der Template Generator z.B. in einen Cronjob eingebunden werden um regelmäßig alle Templates zu aktualisieren.
Bei erfolgreichem Aufruf meldet das Skript seine Aktivitäten, z.B.:
processing site jaegers.net...
processing template main_typo3.tpl...
copying template /.../templates/main_typo3.html to /.../jaegers.net/templates/main_typo3.html
processing template main_static.tpl...
processing template main_preisvergleich.tpl...
copying template /.../templates/main_preisvergleich.html to /.../preisvergleich/tpl/jaegers.net/site.tpl
Standardmäßig erstellt der Template Generator alle Templates für alle konfigurierten Sites bei einem Aufruf. Ab der Version 1.1 kann über die zusätzlich übergebene Variable site festgelegt werden, für welche Site die Templates erstellt und verteilt werden sollen. Dadurch ergibt sich z.B. der Aufruf
www.ihrserver.tld/tg/index.php?password=secure&site=demosite.tld
bei dem nur die Templates für die Site demosite.tld erstellt und verteilt werden.
Um jedoch so weit zu kommen, dass Templates erstellt und verteilt werden, ist noch die Erstellung und Konfiguration der Sites und Mastertemplates erforderlich.
Erstellung einer Site
Der Jaegers.Net Template Generator kann Templates für zahlreiche Sites erstellen. Unter einer Site ist dabei eine "inhaltlich" einheitliche Webseite gemeint. Erstellen Sie für jede Site (z.B. demosite.tld) ein Unterverzeichnis unterhalb des Ordners sites. (Es hat sich dabei als hilfreich erwiesen, die Verzeichnisse sprechend zu wählen...) Im Ordner sites sind zwei weitere Verzeichnisse zu erstellen: templates und templates_src. Eine Konfigurationsdatei (config.php) im Ordner sites rundet die Installation dann ab.
sites/
demosite.tld/
templates/
templates_src/
config.php
Im Ordner templates_src werden die Mastertemplates abgelegt. Das Ergebnis der Templateerstellung landet nach dem Aufruf des Template Generators im Ordner templates. Die Einstellungen für die jeweilige Site finden in der Datei config.php statt.
Konfiguration einer Site
Die Konfigurationsdatei config.php innerhalb eines Site Ordners beinhaltet die Sitespezifischen Einstellungen und kann beliebig modifiziert oder erweitert werden. Standardmäßig verwendet der Template Generator hierzu drei Variablenfelder (Arrays): $Site, $Copy und $Live, wobei $Live Variablen nicht in der Konfigurationsdatei gesetzt werden (sollten), sondern zur Laufzeit aus bestehenden Seiten gezogen werden.
Im Folgenden die Erläuterung einiger Variablen:
$Site['TemplateURL'] = 'http://www.meinedomain.tld/index.php;
Mit der Variablen TemplateURL wird auf eine Online-Seite verwiesen, die dynamische Inhalte bereithält, die zum Zeitpunkt der Templateerstellung herangezogen werden sollen.
$Site['OfflineTemplate'] = $GLOBALS['jntgRootDir'] . 'sites/meinedomain.tld/templates_src/offline_template.html';
Nicht immer ist der Zugriff auf das Template aus der Variablen TemplateURL (s.o.) verfügbar. Im Fehlerfalle kann der Template Generator so auf eine z.B. lokal gespeicherte Datei zurückgreifen.
$Site['LiveMarkerDelimiter'] = '\+\+';
Diese Variable überregelt den Wert in der systemweiten Konfigurationsdatei $jntgLiveMarkerDelimiter.
$Site['FileExtension'] = 'html';
Alle Templates dieser Site werden mit dieser Erweiterung erstellt. Diese Variable überregelt den Wert in der systemweiten Konfigurationsdatei $jntgFileExtension.
Weitere mögliche Variablendeklarationen:
$Site['Name'] = 'Meine Seite';
$Site['CopyRight'] = '(c) 1999-2008 John Doe <jd@meinedomain.tld>';
$Site['URL'] = 'http://www.MeineDomain.tld';
$Site['FileDirectory'] = $Site['URL'] . '/files/';
$Site['CSSFile'] = $Site['FileDirectory'] . 'css/stylesheets.css';
Diese Variablen sind nicht vorgegeben, sondern können nach belieben und bedarf definiert und oder erweitert werden. Die Inhalte der $Site Variablen können später in den Templates abgerufen werden. Es lohnt sich hier Variablen zu definieren, die für alle Seiten der Site gültig sind. Lokale Definitionen können später auch noch in den Mastertemplates vorgenommen werden.
Ein weiterer wichtiger Bereich in der Site Definition ist das Copy Segment. Hierbei wird je Template auf Wunsch festgelegt, wohin das fertige Template kopiert werden und wie es benannt werden soll.
$Copy['main_static'] = '/www/static/app/templates/main.static.tpl';
$Copy['main_typo3'] = '/www/cms/meinedomain.tld/fileadmin/templates/main_typo3.html';
Die Syntax ist dabei immer $Copy['TemplateNameOhneErweiterung'] = '/ziel/der/Kopieraktion/dateiname.ext';
Der Template Generator wird hierbei das Template mit der Bezeichnung 'TemplateNameOhneErweiterung' (z.B. main_static) an die Stelle /ziel/der/Kopieraktion
unter der Bezeichnung dateiname.ext kopieren. Das Ziel kann z.B. das Templateverzeichnis eines Content Management Systems sein.
Mastertemplate erstellen
Unter einem Mastertemplate wird eine Vorlagendefinition verstanden, aus der ein Template generiert wird. Eine Site kann mehrere Mastertemplates (z.B. für das CMS, das Forum und eine Anwendung) beinhalten. Das aus einem Mastertemplate generierte Zieltemplate trägt den gleichen Namen, wird jedoch im Verzeichnis templates abgelegt und erhält die mit $Site['FileExtension'] definierte Dateierweiterung. Mastertemplates selber befinden sich im Ordner templates_src und tragen die Erweiterung .tpl am Dateinamen (z.B. mastertemplate.tpl), wobei ihm zur Unterscheidung von eingebundenen Dateien kein .inc vorangestellt werden darf (z.B. nicht hilfstemplate.inc.tpl).
Master- und eingebundene Hilfstemplates sind im Smarty Code erstellt und werden auch entsprechend interpretiert. Eine ausführliche Anleitung zu Smarty findet sich im Internet. Auf diese Weise setzt der Template Generator auf ein mächtiges und anerkanntes Tool zur Templatebeschreibung auf, das für sich genommen auch einfach zu verstehen ist.
Ein beispielhaftes Mastertemplate kann z.B. wie folgt aussehen:
{**
* Template für das Typo3 Template von Jaegers.Net
*}
{* spezifische Variablendefinition *}
{assign var="Type" value="Typo3"}
{assign var="Kontakt" value="###Kontakt###"}
{assign var="Disclaimer" value="###Disclaimer###"}
{* Template zusammenbauen *}
{include file='htmlhead.inc.tpl'}
{include file='bodytop.inc.tpl'}
{include file='contentareatop.inc.tpl'}
{include file='contentcolumn.inc.tpl'}
{include file='contentareabottom.inc.tpl'}
{include file='bodybottom.inc.tpl'}
Segmente mit {* und *} werden als Kommentare verstanden und haben keinerlei Bedeutung, bzw. produzieren auch keine Ausgabe.
Im oberen Bereich werde Templatespezifische Variablen definiert, z.B. die Variable "Type" mit dem Wert "Typo3". Die Variable kann nun innerhalb des Templates und der eingebundenen Hilfstemplates mittels {$Type} abgerufen und ausgegeben werden.
Weiter unten werden verschiedene weitere Templates (sog. Hilfstemplates) eingebunden. Dies geschieht über die include Anweisung. Sie erkennen hier, dass die einzelnen Hilfstemplates mit der Endung .inc.tpl versehen sind um sie von den Mastertemplates zu differenzieren.
Die wesentliche Arbeit liegt bei diesem Beispiel dann jedoch in den Hilfstemplates. Die Stückelung ist hier aus dem Grunde gemacht worden, weil diese Elemente von anderen Templates ebenfalls in Teilen herangezogen werden. So ist z.B. der HTML Kopf bei allen Elementen etwa gleich, der Contentbereich jedoch verschieden.
Hilfstemplates erstellen
Die Hilfstemplates sind ebenfalls in Smarty Syntax gehalten, weisen aber deutlich mehr HTML aus. Ein Beispiel sieht wie folgt aus:
{if $Type eq 'Typo3'}
###Typo3SpecificCode###
{/if}
</body>
</html>
Es handelt sich hier - wie man wohl unschwer erkennen kann - um das Ende einer HTML Seite. Zunächst wird überprüft, ob die Variable $Type mit dem Wert "Typo3" besetzt ist. Betrachtet man das vorangegangene Mastertemplate, so ist dies hier der Fall. Damit wird dann der Text "###Typo3SpecificCode###" ausgegeben und anschließend die beiden HTML Tags. Wird dieses Hilfstemplate von einem anderen Mastertemplate genutzt, in dem $Type mit einem anderen oder gar keinem Wert gesetzt wurde, so werden nur die beiden HTML Tags ausgegeben.
Auf die Werte aus der Konfigurationsdatei ist im Master- und Hilfstemplate ebenfalls der Zugriff möglich:
{$Site.URL} liefert - sofern definiert - den Inhalt der Variablen $Site['URL'], also z.B. www.meinedomain.tld. Das zweite Variablenfeld, das zur Verfügung steht, ist $Live. Hierin werden Abschnitte aus Live Seiten gespeichert.
Live Abschnitte
Betrachten wir die folgende Problemstellung: Es wird ein Content Management System (CMS) verwendet um den Hauptbereich der Seiten zu erstellen und zu verwalten. Hierdurch ergeben sich auf den Seiten variable, bzw. dynamische Inhalte. Dies sind z.B. das Menü oder die News. Ein anderer Teilbereich soll nun aber auch das Menü der Hauptinhalte erhalten, kann aber nicht in das CMS eingebunden werden.
Der Template Generator hat hier nun die Möglichkeit eine Seite vom Dynamischen Content zu ziehen, Elemente daraus zu extrahieren und in die zu erzeugenden Templates einzubetten.
Zu diesem Zweck werden in den Seiten Marker gesetzt. Dies sind HTML Kommentare, die wie folgt aussehen:
zu markierender Bereich
Die +-Zeichen stellen dabei Begrenzer für den Markernamen (hier: MARKER) dar und können über die Site-Konfiguration ($Site['LiveMarkerDelimiter']) oder Systemkonfiguration ($jntgLiveMarkerDelimiter) geändert werden. Der Template Generator speichert nun den Inhalt zwischen den beiden Markern in die Variable $Live['MARKER'], bzw. für die Templates $Live.MARKER. Die Marker müssen dabei jeweils in einer separaten Zeile stehen.
Um das Beispiel mit dem Menü zu vervollständigen:
Das Template könnte damit lauten:
{if $Type eq 'cms'}
###CMSMENU###
{else}
{$Live.MENU}
{/if}
Wird nun das Template für das CMS System erstellt, so wird umgeben von dem Markern der Platzhalter ###CMSMENU### eingefügt, an dessen Stelle das CMS z.B. das Menü einfügt. Für alle anderen Templates zieht der Template Generator nun erst einmal die vom CMS produzierte Seite vom Server (daher 'Live'), bei der zwischen den Markern nun das Menü stehen sollte, speichert dieses in die Variable $Live.MENU und gibt sie damit zwischen den Markern im Template wieder aus. Damit beinhaltet das Template für den statischen Content nun auch das dynamische Menü des Content Management Systems.
Aber Achtung: Aktuell handelt es sich hierbei nur um ein Abbild des Augenblicks, als der Template Generator aufgerufen wurde. Ändert sich die Menüstruktur, so muss der Template Generator erneut aufgerufen werden um das geänderte Menü in die Templates wieder einzubinden. Dies kann insbesondere dann von Bedeutung sein, wenn sich häufig ändernde Inhalte, z.B. News eingebunden werden sollen. Es ist dann ratsam, dass der Template Generator mit der Copy Funktionalität regelmäßig z.B. über einen Cronjob aufgerufen wird.
Modifikatoren
Smarty erlaubt Variableninhalte vor ihrer Ausgabe zu modifizieren. Hierzu stehen verschiedene Standardmodifikatoren (vgl. Smarty Dokumentation) zur Verfügung. Mit dem Jaegers.Net Template Generator wurden einige weitere Modifikatoren hinzugefügt. Die Syntax zur Verwendung eines Modifikators sieht wie folgt aus:
{$Variable|Modifikator}
Es können dabei auch mehrere Modifikatoren nacheinander aufgerufen werden:
{$Variable|Modifikator1|Modifikator2}
Die im Template Generator hinzugefügten Modifikatoren sind die folgenden:
- utf8decode - wandelt einen in UTF-8 codierten String in den Standardzeichensatz um (ab Version 1.1.1)
- utf8encode - wandelt einen String in den UTF-8 Zeichensatz um (ab Version 1.1.1)
Nützlich können auch die folgenden Codeschnipsel sein:
- regex_replace:"/href=\"(?!http)/i":"href=\"http://www.meinedomain.tld/" - wandelt relative Links in absolute Links zur Domain meinedomain.tld um
Templates kopieren
Der Template Generator kann die frisch erstellten Templates automatisch an verschiedene Stellen auf den Server kopieren (publishen). So können die Templates in allen Anwendungen automatisiert und zeitgleich eingebunden werden.
Vorsicht: Die aktuelle Version des Template Generators ist hier recht rabiat und kopiert "gnadenlos"!
Die Verwendung der Copy Funktion bedarf also einer gewissen Vorsicht und Aufmerksamkeit.
Die Copy Funktion kann über die Site Konfiguration in der config.php eingerichtet werden. Hierbei wird lediglich die Variable $Copy entsprechend mit Quelle und Ziel besetzt:
$Copy['Quelltemplate'] = '/ziel/der/Kopieraktion/template.ext';
Wenn Sie die Kopierfunktion nicht nutzen möchten, dann lassen Sie das Ziel der Kopieraktion leer oder definieren die Variable gar nicht erst.
$Copy['Quelltemplate'] = '';
In dem Fall bleibt das Template nur im templates Ordner.
Multiple Kopieraktion
Um ein Template an mehrere Stellen oder unter verschiedenen Namen zu speichern bietet der Template Generator seit der Version 1.1 eine Möglichkeit an. Hierbei wird die Variable $Copy['Quelltemplate'] mit einem Array (Feld) versehen, z.B.:
$Copy['Quelltemplate'] = array('ziel/der/ersten/Kopieraktion/template.ext', 'ziel/der/zweiten/Kopieraktion/template.ext');
Die Zahl der Elemente innerhalb des Arrays ist dabei theoretisch nicht begrenzt.
FTP Upload
Der Template Generator ermöglicht des Weiteren das Verteilen der Templates via FTP. Hierzu wird als Ziel der FTP Server mit den ggf. erforderlichen Zugangsdaten angegeben:
$Copy['Quelldatei'] = 'ftp://meinUserName:meinPasswort@ftp.meinServer.de/pfad/template.ext';
Aktuell funktioniert der FTP-Upload nicht, wenn die Datei am Ziel bereits existiert.
Eine Kombination zwischen FTP Upload und Kopieraktion und multipler Kopieraktion ist selbstverständlich möglich, z.B.:
$Copy['Quelltemplate'] = array('ziel/der/ersten/Kopieraktion/template.ext', 'ziel/der/zweiten/Kopieraktion/template.ext', 'ftp://meinUserName:meinPasswort@ftp.meinServer.de/pfad/template.ext');
Hierbei wird die Datei an zwei Stellen auf dem lokalen Server abgelegt und anschließend auch per FTP auf einen anderen Server geschoben.
Template Generator Index
Mehr...
Aktuelles
Keine News in dieser Ansicht.
Suche
Handelsregisterauszug
Webhosting
Produkt- und Preisvergleich
Billig einkaufen

