Zum Inhalt springen

Menüebenen an verschiedenen Stellen

Erstellt am 3. März 2013 · 4 Antworten · letzte Antwort am 10. März 2013

Tags: Frage

kinneremer ·

Hallo und juten Tach,

ich bin gerade daran, die Navigation für eine Seite anzupassen. Dabei ergibt sich folgende Problemstellung:

Die erste Menü-Ebene ist ein Menü oberhalb des Headers, welches horizontal angelegt ist.
Nun sollen die 2. und 3. Ebene in der rechten Spalte unterhalb des Headers angezeigt werden.

Bei diesem Menü sieht aktuell das TS wie folgt aus, wobei die 2. und 3. Ebene direkt aufklappen, wenn man auf den entsprechenden Menüpunkt fährt:

lib.nav = HMENU
lib.nav {
  wrap = <ul class="sf-menu">|</ul>
 
  1 = TMENU
  1 {
    expAll = 1 
    noBlur = 1 
    NO = 1
    NO.allWrap= <li>|</li>
    NO.stdWrap.htmlSpecialChars = 1
 
    CUR = 1
    CUR.allWrap = <li class="aktiv">|</li>
    CUR.stdWrap.htmlSpecialChars = 1
 
  }
 
  2 = TMENU
  2 {
    expAll = 1
    noBlur = 1
    NO.wrapItemAndSub = <li>|</li>
    NO.stdWrap.htmlSpecialChars = 1
 
    CUR = 1
    CUR.wrapItemAndSub = <li class="aktiv">|</li>
    CUR.stdWrap.htmlSpecialChars = 1
 
    ACT = 1
    ACT < .CUR
  }
 
  3 < .2
  3.wrap = <ul>|</ul>
}

Wie muss ich das TS nun anpassen, damit die 2. und 3. Ebene bei einem weiteren Marker ###SUBMENU### angezeigt wird, als vertikales Menü?

Für Eure Unterstützung wäre ich sehr dankbar...

Chrissli ·

Hallo kinneremer,

ist eigentlich gar nicht so schwer, du machst aus deinem einem Menü zwei und arbeitest mit "entryLevel".
So machst du quasi ein Hauptmenü ( bei 1. Ebene ) und ein Untermenü ( 2. und 3. Ebene ) in dem du diesem mit entryLevel sagst, dass du das Menü erst ab der 2. Ebene des aktuellen Menüpunktes anzeigen möchtest.
Näheres zu entryLevel wie immer in der Script-Referenz.

kinneremer ·

OK, soweit, so gut...
habe jetzt mal versucht, das mit dem TypoScript zu lösen, jedoch bekomme ich es einfach nicht zum Laufen.

Es gibt 2 Dateien mit TypoScript:
root.t3s

MENU = HMENU
			MENU {
				special = directory
				special.value = 3
				entryLevel = 1
				1 = TMENU
				1 {
					expAll = 1
					noBlur =1
					wrap = <ul id="topnav" class="sf-menu">|</ul>
					NO = 1
					NO {
						wrapItemAndSub = <li>|</li>
						stdWrap.htmlSpecialChars = 1
					}
					CUR < .NO
					CUR {
						ATagParams = id="aktiv"
					}
				}
			}
			
			SUBMENU = HMENU
			SUBMENU.1 = TMENU
			SUBMENU {
					special = directory
					special = list
					special.value = 1
					entryLevel = 2
					excludeUidList = 1,2,3
					}
			SUBNMENU.1 {
   						NO.allWrap =  <div class="mainmenu1"> | </div>
   						ACT = 1
   						ACT.allWrap = <div class="mainmenu1-act"> | </div>
						}

			SUBMENU.2 = TMENU
   			SUBMENU.2 {
   						NO.allWrap =  <div class="mainmenu2"> | </div>
   						ACT = 1
   						noBlur = 1
   						ACT.allWrap = <div class="mainmenu2-act"> | </div>
						}

und die menu.t3s

lib.nav = HMENU
lib.nav {
  wrap = <ul class="sf-menu">|</ul>
 
  1 = TMENU
  1 {
    expAll = 1 
    noBlur = 1 
    NO = 1
    NO.allWrap= <li>|</li>
    NO.stdWrap.htmlSpecialChars = 1
 
    CUR = 1
    CUR.allWrap = <li class="aktiv">|</li>
    CUR.stdWrap.htmlSpecialChars = 1
 
  }
 
}

lib.nav = HMENU
lib.nav.1 = TMENU
lib.nav.special = directory
			# marks.SUBMENU.special = list
			lib.nav.special.value = 1
			# marks.SUBNMENU.excludeUidList = 1,2,3
			lib.nav.1 {
   						NO.allWrap =  <div class="mainmenu1"> | </div>
   						ACT = 1
   						ACT.allWrap = <div class="mainmenu1-act"> | </div>
						}

			lib.nav.2 = TMENU
   			lib.nav.2 {
   						NO.allWrap =  <div class="mainmenu2"> | </div>
   						ACT = 1
   						noBlur = 1
   						ACT.allWrap = <div class="mainmenu2-act"> | </div>
						}
			
			
			}

Jetzt hänge ich komplett, da ich mit TS nicht wirklich fit bin.
Habe versucht, das aus 2 Menüs "zusammenzubasteln".
Kann mir jemand helfen, wo mei Fehler liegt?

DANKE... :o

Chrissli ·

Mal so vorweg

SUBMENU.1 = TMENU
SUBMENU {
  special = directory
  special = list
  special.value = 1
  entryLevel = 2
  excludeUidList = 1,2,3
}

special = directory
und entryLevel beisst sich
ABER
das ist egal, da du special = list setzt ( was sich vermutlich auch beisst ).
Effektiv hast du gerade stehen:
"Bau ein Menu aus den Seiten mit den Uids '1' aber ohne die Seiten mit den Uids '1,2 und 3'...
Merkste was?
Generell solltest du hier die "special"-Einträge weglassen können, da du mit entryLevel=2 automatisch die Unterseiten der aktuell gewählten Seite auswählst. Ob exludeUidList für dich notwendig ist kann ich dir nicht sagen, aber anhand der Seiten-Ids würde ich behaupten das ist fehlplatziert.

kinneremer ·

Ich werde noch wahnsinnig mit dem TS...

Habe jetz versucht, das mit dem entryLevel zu lösen, aber ich bekomme das Submenü einfach nichtr angezeigt, oder schon ab der 1. Ebene.

Mein TS sieht nun so aus:

                        MENU = HMENU
			MENU {
				special = directory
				special.value = 3
				entryLevel = 1
				1 = TMENU
				1 {
					expAll = 1
					noBlur =1
					wrap = <ul id="topnav" class="sf-menu">|</ul>
					NO = 1
					NO {
						wrapItemAndSub = <li>|</li>
						stdWrap.htmlSpecialChars = 1
					}
					CUR < .NO
					CUR {
						ATagParams = id="aktiv"
					}
				}
			}
			
			SUBMENU = HMENU
			SUBMENU {
				entryLevel = 2
				1 = TMENU
				1 {
   					NO.allWrap =  <div class="submenu1"> | </div>
   					ACT = 1
   					ACT.allWrap = <div class="submenu1-act"> | </div>
					}

				2 = TMENU
   				2 { 
   					NO.allWrap =  <div class="submenu2"> | </div>
   					ACT = 1
   					noBlur = 1
   					ACT.allWrap = <div class="submenu2-act"> | </div>
					}
			}

Wieso funktioniert das denn nicht???
Herr hilf!!!