Florian Fiegel | 23.12.2008 16:11

    HowTo: Multisitetheme mit sitespezifischen Elementen

    Habari unterstützt von Haus aus die Möglichkeit von Multisiteinstallationen, die völlig unabhängig voneinander funktionieren, aber auch die Möglichkeit haben bestimmte Dinge zu teilen. Dazu zählen Plugins, Themes und das Daten-Silo. Besonders interessant dürfte für einige Anwendungsfälle das geteilte Theme sein, denn gerade bei Corporate-Designs lässt sich so für alle Seiten gleichzeitig das Theme über ein Template anpassen.

    Problem: Sitespezifische Elemente

    Bei Themes mit Elementen, die nur sitespezifisch zum Einsatz kommen, besteht die Möglichkeit diese als Plugin zu realisieren oder ein entsprechendes sitespezifisches Theme zu erstellen und in den sitespezifischen Unterordner zu speichern. Der daraus entstehende Nachteil ist allerdings die nicht mehr zentrale Veränderbarkeit des Themes. Eine zentrale Anpassung muss erst wieder übertragen werden.

    Dieses Problem lässt sich für einige Dinge wie CSS, Javascript und Grafiken umgehen, in dem diese fix an einem Ort abgelegt werden. Ist aber bei kleinen Änderungen an nicht spezifischem Html-Code weiterhin beständig. Ein Theme nur teilweise von einem Ort zu laden, erlaubt allerdings wiederum das System nicht.

    Lösung: Domain als Bedingung

    Um den Vorteil des zentralen Themes nutzen zu können und dennoch flexibel Elemente einbauen zu können, gibt es nur die Lösung über die Domain der jeweiligen Seite. Während Habari an Hand der Domain die Seiten unterscheidet, muss dies im Theme ähnlich gelöst werden. Die Domain wird folglich als Bedingung für die Anzeige einzelner Elemente genutzt, während das Theme sich weiterhin zentral pflegen lässt.

    Genutzt wird dafür einfach der global in PHP verfügbare Variable $_SERVER['SERVER_NAME'], diese liefert beispielsweise für HabariMag www.habarimag.de zurück. Ein Vergleich könnte folglich $_SERVER['SERVER_NAME'] == 'www.habarimag.de' lauten.

    Je nach Umfang und Bereich Sitespezifischer Elemente lohnen sich globale oder kleine Einzelfall-Lösungen in Form von if-Bedingungen oder Switch-Verschaltungen. Sollen beispielsweise nur einzelne Codeschnippsel in der Sidebar auftauchen, lässt sich dies mit einer kleinen Abfrage lösen:

    <?php if ($_SERVER['SERVER_NAME'] == 'www.habarimag.de') {?> Dies ist ein Beispieltext! >?php } ?>

    Auf diesem Weg lassen sich auch verschiedene Dateien in das Theme laden, soll auf einer einzelnen Seite beispielsweise die Sidebar vollständig abweichen, können zwei verschiedene Templates angelegt und parallel verwendet werden.

    Dieser Artikel versucht nur die grundsätzliche Logik zu vermitteln und gibt nicht jede einzelne Lösung wieder. Zum einen wäre dies bei weitem zu umfangreich und andererseits folgen hierzu später gegebenenfalls noch weitere Artikel.


    Schreibe den ersten Kommentar!

    Einen Kommentar abgeben