thischke
Returning Observer

Kann der UrlCreator ein "stopGenerate" erkennen?

Hallo Community,

wir haben 2 Ausgabekanäle und die Verlinkung mit $CMS_REF(...)$ erfolgt immer nach dem ersten Ausgabekanal. Wir würden nun gerne die Verlinkung derart anpassen, dass auf den zweiten Ausgabekanal verlinkt wird, sobald dort eine Seite komplett generiert wird, also nicht per "stopGenerate" abgebrochen. Ich habe verstanden, dass eine URL für den Ausgabekanal immer existiert, egal ob diese generiert wird oder nicht, siehe:

https://community.e-spirit.com/message/20951

Da wir einen eigenen UrlCreator verwenden, haben wir die URL-Erzeugung unter eigener Kontrolle. Kann ich erkennen, ob eine Seite vollständig generiert wird, oder per "stopGenerate" abgebrochen wird? Für den zweiten Fall könnte ich dann in den UrlProperties bspw. "<none>" speichern, auf das ber der Verlinkung reagiert werden kann.

Mit freundlichem Gruß

Thorben Hischke

7 Replies
Peter_Jodeleit
Crownpeak employee

Da es keinerlei Einschränkung gibt, wann ein "stopGenerate" durchgeführt werden kann, gibt es auch leider keine Möglichkeit, das im Vorhinein zu erkennen.

Peter
0 Kudos

Okay, dann habe ich also ...

  1. im UrlCreator keine Möglichkeit zu erkennen, ob eine Seite generiert wird und ...
  2. beim Generieren der Seite kann ich es ebenfalls nicht erkennen, da für alle Ausgabekanäle die Urls erzeugt werden

Ich könnte mir noch vorstellen, vor der eigentlichen Vollgenerierung des gesamten Inhaltes eine Vollpublizierung des einen Ausgabekanals zu erstellen, dessen Logausgabe im Nachgang nach Generierungs-Stopps parsen und entsprechend die UrlProperties manipulieren ... klingt nicht nur irgendwie kompliziert, sondern es ist auch kompliziert und "um die Ecke gedacht" und es verlangsamt die Vollpublizierung.

Alternativ müsste man bei der Auslieferung im Tomcat/Apache entscheiden, welches Generat ausgeliefert werden soll. Das ist aber unpraktisch, da dies bei jedem Request passieren muss und aus Effizienzgründen sollte dies einmalig bei der Generierung passieren.

Für Ideen und Hinweise bin ich offen und dankbar.

0 Kudos
Radigewski
Occasional Collector

Im zweiten Ausgabekanal gibt es also eine Bedingung, die entscheidet, ob die Seite für diesen Kanal generiert wird. Das CMS_REF kommt vermutlich aus einer Linkvorlage.

Beziehen sich CMS_REF und stopGenerate Bedingung dann auf den gleichen Inhalt?

Kannst Du dann die Bedingung für das stopGenarte nicht auch in der Linkvorlage verwenden und das CMS_REF entsprechenend anpassen?

Das scheint mir der geeignete Ansatz zu sein.

Peter
0 Kudos

Gute Idee, hilft mir aber in unserem Fall leider nicht weiter. Wir wollen den zweiten Ausgabekanal als zukünftige Standardauslieferung benutzen, können aber nicht alles auf einmal umstellen, so dass wir einen Migrationspfad beschreiten müssen. Und den stellen wir uns momentan so vor, dass im zweiten Ausgabekanal erst einmal in den gesamten Seiten-, Absatz- und Format- und sonstigen Templates überall ein "stopGenerate" steht. Setzen wir das Template einer Seite mit seinen gesamten Bestandteilen komplett um, wird also die Seite für den zweiten Ausgabekanel generiert, wollen wir dieses Generat ausliefern, ansonsten das "alte" HTML.

Ich habe heute unseren UrlCreator derart angepasst, dass er für eine zu generierende Seite in allen beteiligten Templates schaut, ob dort ein "stopGenerate" steht, wenn ja, erzeuge ich eine "invalide" Url, d.h. ich verwende ein festes Schema, welches im ausliefernden Apache per Url-Matching erkannt und entsprechend behandelt werden kann.

Somit brauche ich keine Anpassungen im CMS_REF vorzunehmen, die Url-Generierung wird einmal nachts angestossen, so dass die zusätzliche Zeit verschmerzt werden kann und wenn wir weitere Tempates angepasst haben, setze ich die Urls für die Seiten zurück, die diese Templates verwenden. Ich bin (noch) zuversichtlich, dass diese Lödung für uns trägt.

0 Kudos

Für den Anwendungsfall würde ich einen anderen Ansatz vorschlagen, und zwar den Template-Code "umzuleiten".

Also:

  • Es wird bis zur kompletten Migration ganz normal der erste Kanal generiert
  • Sobald ein Template komplett migriert ist (2. Kanal fertig), wird der komplette Quellcode im 1. Kanal durch eine Weiterleitung ersetzt
    $CMS_VALUE(#global.template.getTemplateDocument(<TemplateSet 2. Kanal>))$

Somit entfällt auch die Notwendigkeit, mit "stopGenerate" zu arbeiten, weil bis zur kompletten Umstellung nur der 1. Kanal generiert wird.


Peter
MichaelaReydt
Community Manager

Hallo Thorben,

benötigst du noch weitere Hilfe oder haben dir die bisherigen Antworten bereits geholfen? In diesem Fall wäre es super, wenn du die "richtige Antwort" entsprechend markierst.


Solltest du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn du diese hier bereitstellst.

Viele Grüße

Michaela

0 Kudos