Search the FirstSpirit Knowledge Base
Für einen unserer Kunden haben wir ein FS Projekt angelegt, über das mehrere Microsites gepflegt werden können.
In der Strukturverwaltung wurde für jede Microsite ein eigener Ordner angelegt und nur für diesen Ordner mehrere Teildeployments in der Auftragsverwaltung angelegt. Damit die Startseite der jeweiligen Microsite aber im Root stehen kann, sind die Indexseiten (Startseiten) direkt im Wurzelverzeichnis der Strukturverwaltung abgelegt. Der Dateinamen wurde für alle Seiten auf index eingestellt. Im Deploymentauftrag jeder Microsite wird zusätzlich zum oben beschriebenen Ordner auch die jeweile Indexseite ausgewählt.
Das Problem ist jetzt nur, dass, obwohl ja pro Microsite nur eine bestimmte Indexseite im Deployment eingestellt ist, FS automatisch an den Dateinamen ein ~1 usw. dranhängt. Bei einem Volldeployment macht das ja durchaus Sinn (dürfen ja in einem Verzeichnis keine Dateien mit identischem Namen liegen), aber beim Teildeployment, wo explizit nur eine Indexseite ausgewählt ist, hätte ich erwartet, dass diese dann auch nur z.B. index heißt.
Die einzige Lösung des Problems sehe ich derzeit in einem Deploymentskript welches, die Datei umbenennt.
Da ich dies aber als sehr umständlich ansehe, wollte ich nur fragen, ob es nicht eine einfacherer Lösung gibt.
Danke für eure Mithilfe.
Viele Grüße,
Stefan
Eine andere Möglichkeit wäre vielleicht doch N Indexseiten zu erstellen (für jede Microsite eine eigene). Auf oberster Ebene könnte man dann genau eine Index-Seite erstellen, die lediglichen einen "passenden" Redirect auf die Sub-Indexseite durchführt. "Passend" bedeutet hier, dass das Redirect-Ziel im Teil-Deployment dynamisch gesetzt wird, jeweils auf die korrekte Sub-Indexseite.
Und was hieße hier im Teildeployment das Redirect Ziel dynamisch zu setzen? Ich hatte ja an eine Deploymentvariable gedacht, aber der kann man ja nur einen String Wert übergeben und keine Referenz auf eine Seite auswählen.
Hallo Stefan,
davon abgesehen, dass ich ein Skript zur Umbenennung der entsprechenden Indexseite für nicht wirklich kompliziert halte (hier würde ein einfaches Betriebssystemskript ausreichen, welches die Datei umbenennt, wobei ich in diesem Fall empfehlen würde, den Dateinamen auf einen eindeutigen Namen pro Microsite zu ändern, um saubere, eindeutige "Quellnamen" zu haben. Wie man ein solches Dateisystemskript aufruft, findet man zum Beispiel in diesem Blogposting), reicht es doch völlig aus, wenn die Deploymentvariable ein String ist. Anhand dieses Strings (der zum Beispiel der Name der Microsite sein könnte) kann man dann das entsprechende Ziel auswählen [ist ja ein einfaches IF Statement im FirstSpirit Quellcode, das Ziel kann dann zum Beispiel in einer Struktur-Variable oder in den globalen Einstellungen definiert werden].
Und hier noch der Tipp, wie es ohne IF Statement klappen sollte:
Wenn in der Struktur für jede Microsite eine Struktur-Variable definiert wird, die die Zielseite beinhaltet, so könnte die Deploymentvariable als Inhalt den Namen der entsprechenden Struktur-Variable haben. Dann kommt man folgendermaßen an den Wert:
$CMS_VALUE(#global.getContext().getVariableValue(Deploymentvariablenname))$
Hierbei kann man die entsprechende Variable natürlich auch zusammensetzen, also zum Beispiel:
$CMS_VALUE(#global.getContext().getVariableValue(Deploymentvariablenname + "reference"))$
wenn man unterschiedliche Werte auslesen möchte.
Beispiel:
- Name der Deploymentvariable ist "Microsite"
- Wert der Deploymentvariable ist "Dortmund"
- Name der entsprechenden Struktur- oder globalen Variablen wäre dann
Dortmund (im ersten Aufruf)
Dortmundreference (im zweiten Aufruf)
Viele Grüsse aus Dortmund,
Holger
Ich habe jetzt den Ansatz mit den Deployment und den Strukturvariablen ausprobiert, aber leider funktioniert dieser nicht, denn innerhalb der Index Seite, die ja außerhalb der Microsite Ordner liegt ist eine Strukturvariable, die auf dem Ordner einer bestimmten Microsite gesetzt wurde ja gar nicht bekannt.
Ich werde mir wohl was anderes überlegen müssen.
Setzen Sie die Struktur-Variablen auf dem Root Ordner [das ist sowieso grundsätzlich empfehlenswert ]
Wenn immer die selbe Variable für alle Microsites verwendet werden soll, so kann deren Wert in den Teilordnern überschrieben werden (falls er für die Vorschau benötigt wird). In diesem Fall müssen Sie die entsprechende Variable als Deploymentvariable erneut definieren (mit exakt dem selben Namen) und dort den Wert für die entsprechende Microsite zuweisen.
Bei der Veröffentlichung über den entsprechenden Auftrag wird dann der Wert der Variable auf dem Root-Knoten der Struktur zu dem im Auftrag definierten Wert für diese Veröffentlichung geändert.