Navigation durchnummerieren
Author: TimoMeister
Publication Date: 10/26/2017 13:29
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
-
Author: sense - 10/26/2017 13:39
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 -
Author: TimoMeister - 10/26/2017 13:43
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 -
Author: mbergmann - 10/26/2017 13:51
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 -
Author: TimoMeister - 10/26/2017 14:01
Hallo Michael,
das ist perfekt!!! Genau das habe ich gesucht.
Funktioniert genau, wie von Dir angegeben.
Danke und viele Grüße
Timo0
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
4 Kommentare