Dies ist eine alte Version des Dokuments!
Um Modul- bzw. Templatevarianten zu verstehen, gehen wir von folgendem Szenario aus: Das Modul XY soll auf 3 Seiten verwendet werden. Auf den Seiten 1 und 2 soll die Standarddarstellung verwendet werden; für die Seite 3 sind aber optische Anpassungen nötig.
In Website Baker und LEPTON sind nun Umwege nötig: Z.B. kann man für die explizite Seite eine eigene CSS-Datei erstellen und diese mit Hilfe einer entsprechenden Anweisung im Template gezielt nur für diese Seite einbinden. Das funktioniert zwar, aber mit mehreren Einschränkungen:
templates
-Verzeichnis geändert werden. Das gilt dann aber für alle Instanzen des Moduls. Außerdem werden diese Anpassungen bei einem Update des Moduls überschrieben.BlackCat CMS verfügt daher über die Möglichkeit, Varianten zur Verfügung zu stellen. Das gilt für Module ebenso wie für Templates. Das Grundprinzip hierbei ist folgendes:
Ein Standard-BlackCat-Template hat normalerweise ungefähr folgende Ordnerstruktur:
./templates /<templatename> /index.php /info.php /css /default /frontend.css /backend.css /... /templates /default /index.tpl /...
Das Verzeichnis default
beinhaltet die Standarddarstellung, die immer dann gilt, wenn nichts anderes eingestellt wurde.
Um nun eine Variante zu erstellen, legt man parallel zum Verzeichnis default
ein weiteres Verzeichnis an, in dem man alle Templates bzw. CSS-Dateien ablegt, die abweichend von der Standarddarstellung gestaltet werden sollen.
./templates /<templatename> /index.php /info.php /css /default /frontend.css /backend.css /... /myvariant /frontend.css /backend.css /... /templates /default /index.tpl /... /myvariant /index.tpl
Die Besonderheit: Fehlt im Verzeichnis myvariant
ein Template, wird dieses automatisch aus dem Verzeichnis default
genommen. Man muss also wirklich nur diejenigen Dateien kopieren, die auch wirklich angepaßt werden sollen!
Die index.php
sieht für Template prinzipiell immer gleich aus. (Im folgenden Beispiel wurde wegen der besseren Lesbarkeit der Kopfteil mit Copyright und class.secure.php
weggelassen.)
// vom Admin ausgewählte Variante auslesen $variant = CAT_Helper_Page::getPageSettings($page_id,'internal','template_variant'); // falls keine gewählt wurde, Fallback auf 'default' if(!$variant) $variant = ( defined('DEFAULT_TEMPLATE_VARIANT') && DEFAULT_TEMPLATE_VARIANT != '' ) ? DEFAULT_TEMPLATE_VARIANT : 'default'; // dem Template Parser die Variante als Hauptpfad übergeben $parser->setPath(CAT_TEMPLATE_DIR.'/templates/'.$variant); // für dort nicht vorhandene Templates 'default' als Fallback setzen $parser->setFallbackPath(CAT_TEMPLATE_DIR.'/templates/default'); // das Template ausgeben $parser->output('index.tpl',array());
(Anmerkung: Zur Sicherheit könnte man noch eine Prüfung einbauen, ob das Varianten-Verzeichnis existiert.)
BlackCat CMS bietet die Varianten im Backend automatisch in Form einer Selectbox an, wenn diese in der info.php
konfiguriert sind. Beispiel:
$template_variants = array( 'default', 'myvariant' );
Anmerkung: Natürlich könnte auch einfach eine Liste der Unterverzeichnisse unterhalb von templates
angeboten werden, das könnte aber zu 'false-positives' führen, wenn man z.B. eine Sicherungskopie eines Templates erstellt hat, die eigentlich nicht für die Nutzung bestimmt ist. Daher werden nur die Varianten angeboten, die als solche konfiguriert sind.