mona_ketterer
I'm new here

Teilgenerierung Startnodes - incoming references und Seitengruppen/Navigation

Jump to solution

Hallo zusammen,

ich starte innerhalb des Workflows eine Teilgenerierung - dazu suche ich mir vereinfacht gesagt über getIncomingReferences rekursiv die abhängigen Seitenreferenzen (für Datenquellen usw. gehe ich anders vor, aber das sei hier mal außen vor gelassen) für das im Workflow befindliche Objekt. Das funktioniert auch wunderbar soweit.

Ich habe nun allerdings das Problem, dass Verlinkungen auf eine Seite, die über die Navigationsfunktion erfolgen (CMS_FUNCTION name="Navigation") oder Seitengruppen (CMS_FUNCTION name="PageGroup"), nicht als incoming references aufgeführt sind. Ist ja auch irgendwo nachvollziehbar, führt aber dazu, dass bei Änderungen an Seitenreferenzen, die eine Änderung des Namens in der Navigation und/oder eine Änderung an der URL (Advanced URLs hängen ja u.a. vom displayName ab) mit sich bringen, eigentlich alle Seiten mit Navigation neu generiert werden müssten, ich über die Teilgenerierung ja aber nur die Seitenreferenzen als startnodes hinzugefügt habe, die ich aus den incoming references erkennen kann.

In dem Fall würde also die Navigation nur auf den Seiten, die eine incoming reference darstellen, aktualisiert, auf den anderen wäre noch die falsche URL verlinkt.

Nun die Frage: Gibt es irgendeine Möglichkeit, per API herauszufinden, auf welchen Seitenreferenzen eine Seite per Navigationsfunktion und/oder Seitengruppe verlinkt wird - und ist das im Workflow so überhaupt sinnvoll?

Ich sehe aktuell zwei Lösungen:

1. immer eine Vollgenerierung machen (im Workflow natürlich sehr ungünstig, da es relativ lange dauert)

2. im Workflow prüfen, ob es eine Änderung gab, die sich in irgendeiner Weise auf den Namen in der Navigation oder die URL auswirken könnte - damit wäre aber URL-Generierung und Workflow fachlich nicht mehr unabhängig voneinander, sondern der Workflow muss wissen aus welchen Bestandteilen die URLs generiert werden. Je nachdem wie Seitengruppen und Navi aufgebaut sind, wird es sehr kompliziert - da kann ja alles enthalten sein... Aber zumindest könnte ich in den Fällen, in denen das nicht zutrifft, nur eine Teilgenerierung machen, was deutlich schneller und eleganter wäre.

Ich kann die Vollgenerierung auch nicht nur auf Änderungen an den Seitenreferenzen einschränken, da wegen WebEdit den Workflow immer an die Seitenreferenzen, nicht an den Inhalten, angehängt ist, d.h. jede Inhaltsänderung ist im WebEdit führt zum Workflow auf der Seitenreferenz, die ja potentiell eine Änderung der URL/Menüname nach sich ziehen könnte.

Oder denke ich hier irgendwo verkehrt? Bin dankbar für Denkansätze und Ideen Smiley Happy

Vielen Dank und viele Grüße

Mona

0 Kudos
1 Solution

Accepted Solutions

Hallo,

ja, das ist richtig. Vielleicht kannst du aber ein ähnliches Konzept umsetzen. Die Deltagenerierung hat für die Navigationen ja das Konzept der "levelRules". Sowas kannst du in deiner Logik natürlich auch umsetzen (Beispiel: wenn der Knoten in Ebene 2 liegt, dann ab Ebene 1) generieren. Du musst dann eben selbst ermitteln, in welcher Ebene sich der geänderte Knoten befindet und dann entsprechend nach oben wandern.

In einigen Projekten wurde das auch schon mit Strukturvariablen oder Metadaten abgedeckt. Man geht von einem geänderten im Baum nach oben, bis man auf eine "ab hier generieren" Variable trifft.

Viele Grüße

Christoph

View solution in original post

0 Kudos
4 Replies
feddersen
Community Manager

Hallo Mona,

hast du dir schon mal die Deltagenerierung angeschaut?

0 Kudos

Vielen Dank für die Rückmeldung! Angeschaut ja, das wäre sicherlich einfacher zu handeln - wir setzen in diesem Fall allerdings auch die (ja nicht offiziell unterstütze) CurrentStand-Generierung ein, das hatte ich in meiner Beschreibung vergessen zu erwähnen, und soweit ich mich erinnere war der Einsatz der Deltagenerierung in dem Kontext nicht empfohlen. Daher hatten wir den Ansatz gewählt, im Rahmen des Workflows die Startnodes eben selbst zu ermitteln.

0 Kudos

Hallo,

ja, das ist richtig. Vielleicht kannst du aber ein ähnliches Konzept umsetzen. Die Deltagenerierung hat für die Navigationen ja das Konzept der "levelRules". Sowas kannst du in deiner Logik natürlich auch umsetzen (Beispiel: wenn der Knoten in Ebene 2 liegt, dann ab Ebene 1) generieren. Du musst dann eben selbst ermitteln, in welcher Ebene sich der geänderte Knoten befindet und dann entsprechend nach oben wandern.

In einigen Projekten wurde das auch schon mit Strukturvariablen oder Metadaten abgedeckt. Man geht von einem geänderten im Baum nach oben, bis man auf eine "ab hier generieren" Variable trifft.

Viele Grüße

Christoph

0 Kudos

Hallo Christoph,

ok, das könnte man natürlich machen, wir probieren mal aus wie weit wir damit kommen.

Vielen Dank für die Hilfe,

Mona

0 Kudos