Benutzer-Werkzeuge

Webseiten-Werkzeuge


faq:modules:variants

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
faq:modules:variants [2014/08/08 10:57]
shadowcat angelegt
faq:modules:variants [2015/02/16 00:00] (aktuell)
Zeile 8: Zeile 8:
   * Ändert sich die ID der Seite, muss das Template angepaßt 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.   * Es funktioniert nur mit CSS- und/oder JS-Dateien, jedoch nicht mit kompletten Ausgabe-Templates.
 +  * Ausgabe-Templates können nur direkt im ''​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: 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:
Zeile 14: Zeile 15:
   * Auf Basis dieser Standarddarstellung können weitere Varianten abgeleitet werden. ​   * Auf Basis dieser Standarddarstellung können weitere Varianten abgeleitet werden. ​
   * Varianten können auch eine komplett andere Darstellung beinhalten.   * Varianten können auch eine komplett andere Darstellung beinhalten.
 +  * Bei einem Update wird nur das Standard-Verzeichnis überschrieben,​ nicht jedoch die selbst erstellten Varianten.
  
 ===== Templates mit Varianten ===== ===== Templates mit Varianten =====
Zeile 59: Zeile 61:
 <WRAP center round tip 100%> <WRAP center round tip 100%>
 **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 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!
 +</​WRAP>​
 +
 +===== 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.)
 +
 +<sxh php>
 +// 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());​
 +</​sxh>​
 +
 +(Anmerkung: Zur Sicherheit könnte man noch eine Prüfung einbauen, ob das Varianten-Verzeichnis existiert.)
 +
 +===== Die Variante zur Auswahl stellen =====
 +
 +BlackCat CMS bietet die Varianten im Backend automatisch in Form einer Selectbox an, wenn diese in der ''​info.php''​ konfiguriert sind. Beispiel:
 +
 +<sxh php>​$template_variants = array( '​default',​ '​myvariant'​ );</​sxh>​
 +
 +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.
 +
 +===== Angepaßtes CSS laden =====
 +
 +BlackCat CMS verfügt über eine einfache Namenskonvention,​ die das automatische Laden der '​richtigen'​ CSS-Datei ermöglicht. Der einfachste Weg ist, die zur Variante gehörende CSS-Datei im Verzeichnis ''​./​templates/<​Templatename>/​css/<​Variante>''​ abzulegen und ''​template.css''​ zu nennen.
 +
 +Sollte eine komplexere Logik notwendig sein, kann dies über die Datei ''​headers.inc.php''​ implementiert werden.
 +
 +Hinweis: Wird für eine Variante kein angepaßtes CSS benötigt, muss auch nicht das entsprechende Verzeichnis angelegt werden.
 +
 +===== Module mit Varianten =====
 +
 +Oben beschriebenes Vorgehen funktioniert grundsätzlich auch für Module. Die Variable in der ''​info.php''​ heißt in diesem Fall ''​$module_variants'':​
 +
 +<sxh php>​$module_variants = array( '​default'​ );</​sxh>​
 +
 +===== Kleiner Trick für dynamische Ermittlung der Varianten =====
 +
 +Die vorhandenen Varianten in der ''​info.php''​ als Liste anzugeben, wird für die meisten Fälle ausreichend sein. Will man es dem Benutzer aber erleichtern,​ eigene Varianten anzulegen, ohne daß er hinterher die ''​info.php''​ anpassen muß (die ja zudem bei einem Update überschrieben wird), kann man statt des "​hartcodierten"​ Arrays folgenden Code benutzen:
 +
 +<sxh php>
 +$module_variants = CAT_Helper_Directory::​getInstance()
 +                   ​->​getDirectories(
 +                       ​CAT_PATH.'/​modules/'​.$module_directory.'/​templates',​
 +                       ​CAT_PATH.'/​modules/'​.$module_directory.'/​templates/'​
 +                   );
 +</​sxh>​
 +
 +<WRAP center round important 60%>
 +Achtung, der Slash am Ende des zweiten Parameters ist wichtig!
 </​WRAP>​ </​WRAP>​
  
faq/modules/variants.1407488248.txt.gz · Zuletzt geändert: 2014/08/08 00:00 (Externe Bearbeitung)