Hallo zusammen,
es ist schwierig zu beschreiben, was ich möchte.
Und zwar habe in meiner Webseite ein Topmenü und ein Leftmenü.
Das Topmenü ist ein Megadropdown und das Seitenmenü ergänzt dieses.
Ich habe also zB folgende Webseitenstruktur:
1. Ebene - 2. Ebene - 3.Ebene
* Home
* Sport - Abteilung A - Volleyball
* Sport - Abteilung B - Turnen
* Sport - Abteilung B - Tanzen
Jetzt ist es so, dass im Seitenmenü 2 Ebenen angezeigt werden. Jeweils anders dargestellt.
Also ab der 2. Ebene
Wenn zB Sport gewählt ist, dann wird im Leftmenü gezeigt:
Abteilung A
- Volleyball
Abteilung B
- Turnen
- Tanzen
Wenn ich Jetzt zum Beispiel Volleyball wähle, sieht das Menü genauso aus.
Was ich allerdings erreichen will, ist, dass Volleyball dann der oberste Eintrag im linken Menü wäre. Ich weiß leider nicht, wie ich es besser beschreiben soll.
Das Menü sollte dann aussehen:
Volleyball
Wenn ich Tanzen wähle, soll es wie folgt aussehen:
Turnen
Tanzen
Mit anderen Worten. Immer die Ebene, die gewählt ist, soll die höchste sein. Wie kann ich das erreichen?
DAnke für jede Hilfe
TS meines Menüs:
menu.left = COA
menu.left {
15 = HMENU
15{
entryLevel = 1
wrap = <div class="menu_left">|</div>
1 = TMENU
1{
wrap = <div class="menu_left_menu" ><ul id='menuList'>|</ul></div>
noBlur =1
ACT=1
ACTIFSUB = 1
NO{
wrapItemAndSub = <li class='menuItem'>|</li>
ATagParams = class='menuLink'
}
ACT{
wrapItemAndSub = <li class='menuItem'>|</li>
ATagParams = class='menuLinkAct'
}
ACTIFSUB{
wrapItemAndSub = <li class='menuItem'>|</li>
ATagParams = class='menuLinkAct'
}
}
2 = TMENU
2{
noBlur = 1
ACT = 1
ACTIFSUB = 1
wrap = <ul class='submenuList'>|</ul>
NO{
wrapItemAndSub = <li class='submenuItem'>|</li>
ATagParams = class='submenuLink'
}
ACT{
wrapItemAndSub = <li class='submenuItem'>|</li>
ATagParams = class='submenuLinkAct'
}
ACTIFSUB{
wrapItemAndSub = <li class='submenuItem'>|</li>
ATagParams = class='submenuLinkAct'
}
}
}
}
Hallo,
da gibt es mehrere Möglichkeiten.
Du könntest z.B. den aktuellen Menüpunkt per CSS oben positionieren.
Alternativ könntest du das Menü auch per Typoscript aus einem Typolink auf die aktuelle Seite + Menü exklusive des aktuellen Menüpunktes aufbauen.
Statt entryLevel=1 musst Du entryLevel=-1 schreiben.
Das entryLevel=-1 funktioniert nicht so ganz.
Wenn ich zB auf Tanzen klicke, dann geht das Menü komplett weg und es bleibt nicht nur Tanzen und Turnen stehen.
Es soll möglich sein, dass dann auch zu einem anderen Menüpunkt dieser Ebene gesprungen werden kann in dem Menü.
Ich verstehe nur Bahnhof, was hwt geschrieben hat. Kann ich ein Beispiel kriegen?
Hallo,
entryLevel legt ja auch die Einstiegsebene fest. Die betroffenen Seiten liegen ja aber auf der gleichen Ebene.
Also eine Variante ist, dem aktuellen Menüpunkt CSS-Styles zu geben, die ihn über den anderen positionieren.
Eine andere wäre es die aktuelle Seite als Typolink vor dem Menü einzufügen nach folgendem Muster:
menu.left = COA
menu.left {
10 = TEXT
10.value = ...
10.typolink ....
15 = HMENU
15 {
....
}
Dabei solltest du aber beachten, dass du dein div und ul an den entsprechenden Stellen wrapst und natürlich noch den aktuellen Menüpunkt an seiner Originaloosition mit CSS ausblendest.
Hallo,
wie wäre es, die Rootline zusätzlich zu checken. An Deinem menu.left nichts verändern, nur noch folgendes einfach dranhängen:
[treeLevel = 2]
menu.left.15.entryLevel = -1
[end]
[treeLevel = 3]
menu.left.15.entryLevel = -2
[end]
VG,
LuP
Hallo LuP,
wie soll das denn bitte den aktuellen Menüpunkt der dritten Ebene über die anderen der dritten Ebene setzen?
"entryLevel" gibt doch nur an, ab welcher Tiefe das Submenü dargestellt wird.
Gruß!
hwt, wenn Du die Eingangsfrage nochmal liest wirst Du vielleicht feststellen, dass es genau darum geht. Er will nicht die Reihenfolge der Darstellung ändern, sondern die Einstiegsebene festlegen.
Ich denke es sollte so gehen, wie LuP geschrieben hat.
Oha, ja. Sorry!!
Hatte das mehrfach gelesen aber trotzdem ganz anders verstanden. Ja vor dem Hintergrund habt ihr natürlich recht.
Gruß!
entryLevel definiert, ab welchem Level in der Rootline das Menü starten soll.
Mit entryLevel = 0 werden Menüs der ersten Ebene gerendert.
Mit entryLevel = 1 werden Menüs der zweiten Ebene gerendert.
Bei negativem Wert wird das entryLevel von hinten an in der Rootline gewählt.
corona schrieb
Wenn ich Jetzt zum Beispiel Volleyball wähle, sieht das Menü genauso aus.
Gewählt ist hier die 3. Ebene, gerendert wird aber Menüs der 2. Ebene [entryLevel=1]. Wenn wie im vorliegenden Fall gewünscht, nur Menüs auf derselben Ebene gerendert werden soll und die 3. Ebene die äußerte wäre, müsste nach meiner Logik, wenn [entryLevel=-1] das äußerte Level angibt, das entryLevel in der Rootline rückwärts um eine Ebene runter [entryLevel=-2], dann wäre man am Ziel.
VG,
LuP
Im Grunde würde es auch so schon reichen, statt „entryLevel“:
special = list
special.value.data = page:uid
Das gilt dann allerdings für alle Menüebenen. Mit „treeLevel“ (wie im Beitrag davor) kann aber geholfen werden.
Man könnte aber auch ein ganz „normales“ Menü bauen und nur die gewünschte Ebene anzeigen lassen. Als Beispiel die dritte Ebene. Wenn nicht nur die aktive Elemente angezeigt werden sollen, nimmt man „doNotShowLink“ wieder raus und formatiert den NO-Zustand wie üblich.
menu.left = COA
menu.left {
15 = HMENU
15 {
1 = TMENU
1.NO.doNotShowLink = 1
2 < .1
3 < .1
3 {
noBlur = 1
wrap = <ul>|</ul>
ACT = 1
ACT {
wrapItemAndSub = <li>|</li>
}
}
}
}
Andere Lösungswege gibt es sicher auch
.
Danke,
die Lösung von LuP funktioniert super.