reger
Returning Observer

Auflistung bestimmter Navigationseinträge

Jump to solution

Hallo zusammen,

wir versuchen uns grade an einer Auswertung, die uns Struktureinträge auflisten soll, an denen eine bestimmte Variable gesetzt ist. Dafür habe ich die Navigationsfunktion genutzt und für alle Einträge, die in der Navigation sichtbar sind, funktioniert das auch wunderbar.
Jetzt haben wir aber (Test-)Struktureinträge, die weder im Navigationsmenü noch in der Sitemap sichtbar sein sollen und diese scheine ich nicht über das Script geliefert zu bekommen.  Hier mal ein Beispiel, in dem ich eine zusätzliche Ausgabe haben möchte, wo die Variable "ss_vue_branch" gesetzt ist:

<CMS_HEADER>

<CMS_FUNCTION name="Navigation" resultname="fr_map">

<CMS_PARAM name="expansionVisibility" value="all"/>

<CMS_PARAM name="suppressEmptyFolders" value="0" />

<CMS_ARRAY_PARAM name="unselectedHTML">

<CMS_ARRAY_ELEMENT index="0..10">

<![CDATA[

<url>

<loc>$CMS_VALUE(ps_absURLLive)$$CMS_REF(#nav.ref, abs:2)$</loc>

$CMS_IF(!#nav.data("ss_vue_branch").isNull)$

<branch>$CMS_VALUE(#nav.data("ss_vue_branch"))$</branch>

$CMS_END_IF$

</url>

]]>

</CMS_ARRAY_ELEMENT>

</CMS_ARRAY_PARAM>

</CMS_FUNCTION>

Hierbei fehlen mir die Struktureinträge, die nicht in der Navigation angezeigt werden sollen. Ein weiterer Versuch mit einer Sitemap-Erstellung bringt auch nicht das gewünschte Ergebnis, da hier die gleichen Knoten eine analoge Einstellung zur Sitemap-Ausgabe haben. Ist im Prinzip auch logisch, aber hilft mir nicht weiter.

Habe ich überhaupt Chancen das gewünschte Ergebnis mit der Navigationsfunktion zu erzeugen?

Viele Grüße
Gaby Reger

0 Kudos
1 Solution

Accepted Solutions

Hallo Gaby,

ein wenig musst du mit der API arbeiten, das sollte allerdings nicht zu schwer sein.

Mit dem folgenden Code solltest du an den "SITESTORE" kommen und dann über die Schleife an alle Kinder vom Typ "PageRef"

Damit solltest du denke ich ans Ziel kommen.

$CMS_SET(sv_sitestore_type, class("de.espirit.firstspirit.access.store.Store$Type").SITESTORE)$

$CMS_SET(sv_pageref_class, class("de.espirit.firstspirit.access.store.sitestore.PageRef"))$

$CMS_SET(sv_site_store, #global.project.userService.getStore(sv_sitestore_type, false))$

$CMS_FOR(for_pageref, sv_site_store.getChildren(sv_pageref_class, true))$

     $CMS_REF(for_pageref, abs:2)$

$CMS_END_FOR$

Falls was nicht klappt, kannst du dich ja nochmals melden

Grüße

View solution in original post

0 Kudos
5 Replies
TWidmayer
Elite Observer

Hallo Gaby,

wenn ich mich recht erinnere, dann ist das tatsächlich so, wenn du das Häckchen setzt, dass ein Menüpunkt nicht angezeigt werden soll,

das dieser in der Navigationsfunktion überhaupt nicht berücksichtigt wird.

Dafür müsstest du dir dein XML ohne Navigationsfunktion erstellen, um an alle Seiten zu kommen

Darf aber gerne nochmals jemand bestätigen.

Grüße

Tobi

0 Kudos
reger
Returning Observer

Hallo Tobias,

besten Dank, ich habe es ja schon befürchtet...
Wenn das wirklich so sein sollte: Wie kann ich mir denn sonst helfen um einen entsprechenden Output zu generieren? Muss ich dann in die Tiefen des Java eintauchen und mir ein Script zusammenschreiben bzw. mir einen kompetenten Menschen suchen?

Vielleicht hat ja auch noch irgendwer ein ähnliches Problem und dafür eine Lösung "in der Tasche"?

Viele Grüße
Gaby Reger

0 Kudos

Hallo Gaby,

ein wenig musst du mit der API arbeiten, das sollte allerdings nicht zu schwer sein.

Mit dem folgenden Code solltest du an den "SITESTORE" kommen und dann über die Schleife an alle Kinder vom Typ "PageRef"

Damit solltest du denke ich ans Ziel kommen.

$CMS_SET(sv_sitestore_type, class("de.espirit.firstspirit.access.store.Store$Type").SITESTORE)$

$CMS_SET(sv_pageref_class, class("de.espirit.firstspirit.access.store.sitestore.PageRef"))$

$CMS_SET(sv_site_store, #global.project.userService.getStore(sv_sitestore_type, false))$

$CMS_FOR(for_pageref, sv_site_store.getChildren(sv_pageref_class, true))$

     $CMS_REF(for_pageref, abs:2)$

$CMS_END_FOR$

Falls was nicht klappt, kannst du dich ja nochmals melden

Grüße

0 Kudos
reger
Returning Observer

Hallo Tobias,

Vielen Dank, das hat mir sehr gut weiter geholfen und mich auf die richtige Spur gebracht!

Viel Grüße
Gaby

0 Kudos

Hallo Tobias,

kleine Ergänzung:

In der Zeile

$CMS_SET(sv_site_store, #global.project.userService.getStore(sv_sitestore_type, false))$

wird IMMER mit dem Current-Stand gearbeitet (durch das false). Hier sollte berücksichtigt werden, dass man während der tatsächlichen Generierung den Release-Stand nutzt. Sonst stünden im Generat insbesondere auch Verweise auf Elemente drin, die noch nie freigegeben waren und dadurch auch gar nicht generiert würden.

Z.B. so:

$CMS_SET(sv_site_store, #global.project.userService.getStore(sv_sitestore_type, #global.isRelease))$

Viele Grüße

Michael

0 Kudos