Benutzer-Werkzeuge

Webseiten-Werkzeuge


faq:modules:variants

Dies ist eine alte Version des Dokuments!


Modul-/Templatevarianten

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:

  • Ändert sich das Template, muss diese Anpassung auch in das neue Template übernommen werden.
  • Ändert sich die ID der Seite, muss das Template angepaßt werden.
  • Es funktioniert nur mit CSS- und/oder JS-Dateien, jedoch nicht mit kompletten Ausgabe-Templates.

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:

  • Es existiert eine Standarddarstellung.
  • Auf Basis dieser Standarddarstellung können weitere Varianten abgeleitet werden.
  • Varianten können auch eine komplett andere Darstellung beinhalten.

Templates mit Varianten

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!

index.php für Templates mit Varianten

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.)

faq/modules/variants.1407488635.txt.gz · Zuletzt geändert: 2014/08/08 00:00 (Externe Bearbeitung)