TimoMeister
Returning Responder

Navigation durchnummerieren

Jump to solution

Hallo Community,

in der Navigations-Funktion (<CMS_HEADER>) möchte ich gerne die Navigationspunkte und deren Unternavigationspunkte durchnummerieren.

<item id="0">

     <item id="0.0"></item>

     <item id="0.1">

          <item id="0.1.1"></item>

     </item>

     <item id="0.2"></item>

</item>

<item id="1"></item>

Wie kann man das am besten realisieren?

Viele Grüße

Timo

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo Timo,

das sollte in Deinem Fall durch Nutzung von #nav.positions[levelIndex] machbar sein. Du bekommst dabei jeweils die Position in der übergebenen Ebene. Für den Ordner 2.4.6 wäre #nav.positions[1] also 4.

Um den kompletten „Ebenen-Level-Pfad“ in jedem Element auszugeben, sollte etwas wie folgt funktionieren (nicht getestet, nur für die Idee, ggf. noch irgendwo +/- 1 einbauen):

<item id="$CMS_VALUE([0..#nav.level].map(x->#nav.positions[x]).toString("."))$">...

Viele Grüße

Michael

View solution in original post

0 Kudos
4 Replies
sense
Elite Observer

Das sollte sich mit #nav.level und #nav.levelPos zusammenbasteln lassen.

#nav.level: Nummer der Navigationsebene. Die Zählung beginnt mit 0.

#nav.levelPos: Position des aktuellen Ordners in der aktuellen Ebene. Die Zählung beginnt mit 0.

Mit ein bisschen zusätzlicher Logik solltest Du dann den "Zahlenstring" erhalten.

0 Kudos
TimoMeister
Returning Responder

Das ist richtig. Mit Abfragen klappt das schon.

$CMS_IF(#nav.level==0)$

$CMS_VALUE(#nav.levelPos)$

$CMS_ELSIF(#nav.level==1)$

$CMS_VALUE(#nav.folder.parent.getPosition+"_"+#nav.levelPos)$

$CMS_ELSIF(#nav.level==2)$

$CMS_VALUE(#nav.folder.parent.parent.getPosition+"_"+#nav.folder.parent.getPosition+"_"+#nav.levelPos)$

...

$CMS_END_IF$

Ich dachte nur, vielleicht geht es etwas eleganter? Mit dem Hintergrund, dass man im vorhinein nicht genau weiß, wie viele Ebenen es geben wird.

0 Kudos
mbergmann
Crownpeak employee

Hallo Timo,

das sollte in Deinem Fall durch Nutzung von #nav.positions[levelIndex] machbar sein. Du bekommst dabei jeweils die Position in der übergebenen Ebene. Für den Ordner 2.4.6 wäre #nav.positions[1] also 4.

Um den kompletten „Ebenen-Level-Pfad“ in jedem Element auszugeben, sollte etwas wie folgt funktionieren (nicht getestet, nur für die Idee, ggf. noch irgendwo +/- 1 einbauen):

<item id="$CMS_VALUE([0..#nav.level].map(x->#nav.positions[x]).toString("."))$">...

Viele Grüße

Michael

0 Kudos

Hallo Michael,

das ist perfekt!!! Genau das habe ich gesucht.

Funktioniert genau, wie von Dir angegeben.

Danke und viele Grüße
Timo

0 Kudos