last-Klasse für letzte Navigationselemente in Untermenüs hinzufügen
Posted: Wed May 13, 2009 11:42 am
Hallo zusammen,
ich habe zwar im Forum etwas gefunden mit dem man den letzten Navigationspunkt mit einer "last"-Klasse versehen kann, aber nichts um das auch in den Unterebenen zu tun.
Daher habe ich mir den Menü Manager und die darin enthaltene simple_navigation.tpl mal angesehen und etwas überarbeitet (kenne mich in smarty leider nicht ganz so gut aus, daher ist manches vielleicht etwas "überflüssig" programmiert, wer hier Spezi ist darf es gerne vereinfachen
)
Ich habe also nach der Zeile
folgendes eingefügt:
Zeile 1-3: Variablen definieren bzw. zurücksetzen
Zeile 4: sicherstellen, dass wir nur im array aggieren
Zeile 5: einen, wahrscheinlich sinnlosen, Zähler definieren (leider ließ sich die Berechnung aus Zeile 5 nicht in Zeile 6 berechnen)
Zeile 6: vergleichen ob der nächste Navigationpunkt in einer höheren Ebene liegt als der aktuelle, daraus wird dann geschlossen, dass es der letzte Punkt in der Ebene ist und demnach eine "last" Klasse gesetzt werden kann.
Zeile 6: lastclass definieren für Elemente die noch keine Klasse haben
Zeile 7: lastclassadd definieren für Elemente die bereits eine Klasse haben
Zeile 9-10: if ende
Im Verlauf der Datei bei allen Listenelementen folgendermaßen vorgehen:
die Listenelemente die bereits Klassen haben, wie zB:
müssen dann so ergänzt werden:
bei den Elementen die noch keine Klasse haben (nur das letzte):
muss es nacher so aussehen
Im späteren HTML Quelltext würde es dann zB so aussehen:
oder wenn es zB der aktuelle Eintrag ist:
Ich habe es nur auf 2 Ebenen probiert, es müsste aber auch für beliebig viele Ebenen funktionieren.
Ansprechen kann man den Eintrag dann zB mit (in der Navigation CSS):
Kritik, Verbesserungvorschläge etc. gern gesehen (oder auch nen Link ins Forum wo es bereits eine Lösung gibt, die ich nur nicht gefunden habe
)
ich habe zwar im Forum etwas gefunden mit dem man den letzten Navigationspunkt mit einer "last"-Klasse versehen kann, aber nichts um das auch in den Unterebenen zu tun.
Daher habe ich mir den Menü Manager und die darin enthaltene simple_navigation.tpl mal angesehen und etwas überarbeitet (kenne mich in smarty leider nicht ganz so gut aus, daher ist manches vielleicht etwas "überflüssig" programmiert, wer hier Spezi ist darf es gerne vereinfachen

Ich habe also nach der Zeile
Code: Select all
{foreach from=$nodelist item=node}
Code: Select all
01 {assign var="zaehler" value=$node->index}
02 {assign var="lastclass" value=""}
03 {assign var="lastclassadd" value=""}
04 {if $zaehler+1 < $count}
05 {assign var="zaehlerindex" value=$zaehler+1}
06 {if $nodelist[$zaehlerindex]->depth<$node->depth}
07 {assign var="lastclass" value=' class="last"'}
08 {assign var="lastclassadd" value=" last"}
09 {/if}
10 {/if}
Zeile 4: sicherstellen, dass wir nur im array aggieren
Zeile 5: einen, wahrscheinlich sinnlosen, Zähler definieren (leider ließ sich die Berechnung aus Zeile 5 nicht in Zeile 6 berechnen)
Zeile 6: vergleichen ob der nächste Navigationpunkt in einer höheren Ebene liegt als der aktuelle, daraus wird dann geschlossen, dass es der letzte Punkt in der Ebene ist und demnach eine "last" Klasse gesetzt werden kann.
Zeile 6: lastclass definieren für Elemente die noch keine Klasse haben
Zeile 7: lastclassadd definieren für Elemente die bereits eine Klasse haben
Zeile 9-10: if ende
Im Verlauf der Datei bei allen Listenelementen folgendermaßen vorgehen:
die Listenelemente die bereits Klassen haben, wie zB:
Code: Select all
<li class="currentpage">
Code: Select all
<li class="currentpage{$lastclassadd}">
Code: Select all
<li>
Code: Select all
<li{$lastclass}>
Code: Select all
<li class="last"><a href="url..." ><dfn>2.11: </dfn>Eintrag 1</a>
Code: Select all
<li class="currentpage last"><a href="url..." ><dfn>2.11: </dfn>Eintrag 1</a>
Ansprechen kann man den Eintrag dann zB mit (in der Navigation CSS):
Code: Select all
div#menu_vert ul li.last a { border-bottom:0px }
