sguener
Elite Observer

ContentCreator-Navigation aus einem Modul heraus bauen

Jump to solution

Hallo zusammen,

ich habe die Anforderung, einen Navigationsbaum zu bauen, die nur innerhalb des ContentCreators erscheint und den SiteStore abbildet. Dies funktioniert auch soweit ganz gut. Damit die eigentliche Navigation klappt, wollte ich URLs generieren, die innerhalb des ContentCreators funktionieren.

Der ClienURLAgent.WebeditUrlBuilder liefert mir jedoch URLs, die quasi für von "extern" kommende Redakteure bestimmt sind, da bei einem Klick auf den Link, eine neue Session erzeugt wird und sich der ContentCreator neu initialisiert. Genau das möchte ich verhindern. Aber grundsätzlich funktioniert die Navigation.

Dann habe ich folgendes probiert: ContentProducer.getUrl(...); hat leider zu keinem positiven Ergebnis geführt. Die URL funktioniert zwar, jedoch verlasse ich den ContentCreator Kontext.

Ich hatte in meinem externen Modul auch folgendes als String eingetragen $CMS_REF(pageref:"UID_DER_SEITENREFERENZ")$ in der Hoffnung, die richtige URL zu erhalten. Auch hier fliege ich aus dem ContentCreator Kontext heraus, da es sich um eine "normale" Preview-URL handelt.

Die Anzeige würde vermutlich mit einem Skript, welches über eine DisplayElementOperation die angeklickte Seitenreferenz anzeigt, funktionieren. Ich will aber kein Skript als "Workaround" dazwischen schalten.

Nochmal eine kurze Zusammenfassung mit Beispielen:

1. WebEdit-URL: Funktioniert, wir haben jedoch eine Neuinitialisierung des ContentCreators (Nachteil: Neue Session) Die URL ist wie folgt aufgebaut: http://hostname.ltd:8000/fs5webedit_13967/?project=13967&store=sitestore&element=16043&language=DE-D...

2. ContentProducer.getUrl(): Kontext des ContentCreators geht verloren. URL: http://hostname.tld:8000/fs5preview/preview/13967/site/DE-DE/current/13970/16043

3. Preview-URL: Kontext des ContentCreators geht verloren. Liefert folgende URL: http://hostname.tld:8000/fs5preview/preview/13967/site/DE-DE/current/13970/16043

4. $CMS_REF()$ Direkt im Template: Liefert folgende URL, die funktioniert: http://hostname.tld:8000/fs5webedit_13967/s=I4Eo/preview/13967/site/DE-DE/current/13970/16043

Eventuell denke ich viel zu kompliziert und es gibt einen einfacheren Weg. Daher wollte ich nachfragen, ob jemand von euch eine solche URL (wie unter Punkt 4) per API gebaut hat. Klar könnte man jetzt per "String manipulation" sich eine solche URL zusammen hacken, aber das würde ich nur ungern in Betracht ziehen.

Ich freue mich über jeden Vorschlag.

Schöne Grüße

Sahin

P.S.: Falls es jemanden interessiert: Wir verwenden folgendes Plugin: https://github.com/jonmiles/bootstrap-treeview. Dort initialisieren wir die Komponente mit einem JSON-String, der quasi den SiteStore widerspiegelt. Aus Performancegründen und einer besseren Lesbarkeit, baue ich den JSON-String in einem separaten FirstSpirit-Modul und nicht mit einem BeanShell-Skript.

0 Kudos
1 Solution

Accepted Solutions
CVogel
Crownpeak (Retired)

Hallo Sahin,

warum erzeugst du die Navigation denn nicht mit der "normalen" Navigationsfunktion?

Viele Grüße

Christian

View solution in original post

0 Kudos
5 Replies
CVogel
Crownpeak (Retired)

Hallo Sahin,

warum erzeugst du die Navigation denn nicht mit der "normalen" Navigationsfunktion?

Viele Grüße

Christian

0 Kudos

Hallo Christian,

ganz einfach: Aus Faulheit. Ich versuche diese Funktion zu vermeiden, wo immer es auch geht. Bisher klappte dies auch ganz gut. Ich konnte mich mit der Syntax nicht anfreunden, wenn es um Sonderfälle usw. ging. Daher habe ich das Ganze ausgelagert.

Also kann ich via API keine URLs bauen, die innerhalb des ContentCreators funktionieren und auch den bestehenden Kontext erhalten? Falls das so ist, muss ich da wohl oder übel durch.

Schöne Grüße

Sahin

0 Kudos
CVogel
Crownpeak (Retired)

Hallo Sahin,

warum versuchst du die Funktion zu vermeiden?

Ich glaube, dass es nicht unbedingt sinnvoll ist, eine eigene Funktion zu implementieren, wenn es auch eine Standardfunktion gibt, die die Anforderung abdeckt.

Man kann natürlich auch über die API die URLs erzeugen. Ich würde nur gerne verstehen, warum das der bessere Weg ist.

Und genauso interessieren uns auch die Schwierigkeiten, die du mit der Navigationsfunktion hast.

Könntest du das bitte noch ein wenig genauer erläutern?

Viele Grüße

Christian

0 Kudos

Hallo Christian,

das Problem ist, dass ich mich nie wirklich mit der Syntax und den Parametern beschäftigt habe. Aus Gewohnheit griff ich bisher lieber zu Java, da ich das meiner Meinung nach schneller umsetzen konnte.

Die Standardfunktion habe ich bisher auch nur einmal genutzt für eine Subnavigation. Die Schwierigkeit bestand damals darin, die ganzen Parameter richtig zu verstehen. Nach einigen Try/Error-Schleifen hat das dann auch geklappt. Da ich das damals mit Java schneller gelöst hätte, bevorzuge ich seitdem die Variante mit Java. So viele Navigationen musste ich bislang auch nicht bauen, daher fehlt mir hier auch die Übung.

Ich werde das mal probieren und dann eventuell von meinen Problem berichten.

Vielen Dank für deine Unterstützung

Sahin

0 Kudos

Hallo Christian,

einen weiteren Anwendungsfall hätte ich noch: Wir haben einen Slider gebaut, der durch eine externe Suche (Solr) befüllt wird. Die Treffer enthalten Links auf interne Seiten. Für den ContentCreator würden wir dieses vorgehen auch beibehalten, daher speichern wird im Index auch die ContentCreator-URL. Da das bisher auch nicht funktioniert, wie ich mir das ursprünglich vorgestellt hatte, müssten wir die gesamte Verschlagwortungs- und Sortierlogik im FirstSpirit nachbauen. Das würde ich gerne verhindern, wenn möglich.

Konnte bisher nichts in der öffentlichen API finden. Kannst du mir das Interface nennen, wo diese Methode definiert ist?

Schöne Grüße


Sahin

0 Kudos