Search the FirstSpirit Knowledge Base
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
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
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.
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.
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
Hallo Michael,
das ist perfekt!!! Genau das habe ich gesucht.
Funktioniert genau, wie von Dir angegeben.
Danke und viele Grüße
Timo