Multisite Management mit kleinen Hürden

Als Informatikabteilung einer Grossfirma hat man vielfach die Aufgabe verschiedene Websites zu betreiben. Dabei gibt es die Möglichkeit für jede Website eine eigene Instanz in Sitecore zu erstellen und unabhängig die einzelnen Auftritte zu entwickeln wie auch zu betreiben. Um den Programmier-, Konfiguration- und vor allem den Administrationsaufwand zu minimieren, gibt es in Sitecore die Möglichkeit in einer Instanz mehrere Sites zu erstellen. Durch den bekannten Eintrag in der Web.config kann einfach eine neue Site erstellt werden. Dadurch wird anhand der Domain das Root Item der Site gesetzt. Da es sich nicht um eine komplette Trennung handelt, eignet sich diese Methode vor allem für die Auftrennung von Site, welche optisch ziemlich ähnlich aufgebaut sind (z.b. Hauptmandant und Ländermandanten).

Möchte man diese Methode auch für komplett getrennte Mandanten verwenden (optisch und funktional), muss folgende Problematik bei den globalen Elementen beachtet und allenfalls angepasst werden:

Alias gelten global

Die Aliase werden global unter Sytem/Aliases im Content Editor erstellt und gepflegt. Das Problem ist, dass wenn ein Alias nur für eine Site erstellt werden soll, kann dies mit den angegebenen Mitteln nicht erreicht werden. Daher muss der AliasResolver so erweitert werden, dass er nach Alias-Einträgen sucht, welche lokal innerhalb der Site erstellt wurden.


Lokal pro Site erstelle Alias-Einträge

Dictionary nur zentral gepflegt

Das selbe Problem ist bei den Dictionary-Einträge vorhanden. Viele Einträge wie beispielsweise Drucken, Senden, Abbrechen, usw. sind für alle Seiten gleich, sollen aber allenfalls doch für jede Site seperat gepflegt werden können. Um dies zu erreichen kann man mit einem Fallback-Mechanismus und Präfixen arbeiten. Der Dictionary – Helper sollte so erweitert werden, dass er zuerst auf Prefix_Key überprüft. Falls kein Eintrag gefunden wird, kann der Value für Key ausgelesen werden. Somit hat man die grösstmögliche Wiederverwendbarkeit und doch die Flexibilität für jede Seite eigene Labels zu verwenden.

Sprachen über gesamten Inhalt

Möglicherweise sind die einen Sites für mehr Sprachen verfügbar als die anderen Sites. Die Sprachen können jedoch nur über den gesamten Inhaltsbaum erstellt werden. Innerhalb jeder Site kann ein sogenannten Langauge-Configuration-Item erstellt werden. Dort können die gewünschten Sprachen für die Site ausgewählt werden. Mittels ersetzen / erweitern des LanguageResolver kann dieser so angepasst werden, dass er nicht auf „System/Languages“ alle verfügbaren Sprachen auslist sondern innerhalb der Language-Configuration-Items der einzelnen Site.


Mittels Multilist die gewünschten Sprachen selektieren.

Fehlerseiten pro Site

Die Fehlerseiten sind in der Sitecore.config definiert und können nur global geändert werden. Wenn sich die Seiten jedoch optisch unterscheiden, möchte man für jede Site auch eine optisch angepasste Fehlerseite (v.a. 404). Die Konfiguration kann so angepasst werden, dass sie nicht mehr auf die Sitecore OOB Fehlerseiten referenzieren, sondern auf einen Alias namens „Error-404“. Danach muss für jede Site einen Alias Error-404 erstellt werden. Dieser Alias verweist auf eine Contentsite, welche als 404 – Error Site verwendet wird.

Fazit

Durch kleinere Anpassungen kann Sitecore auch als Multisite Management CMS verwendet werden, obwohl sich die Seiten optisch wie auch funktional unterscheiden. Der Mehraufwand bei der initialen Konfiguration zahlt sich sehr schnell aus. Spätesten wenn man Sitecore auf den neusten Stand updaten möchte, muss dies nur einmal anstatt x-Mal gemacht werden.

Ein Gedanke zu “Multisite Management mit kleinen Hürden

  1. Pingback: Social Extranet mit Community Solution Accelerator – Sitecore

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>