Hi, ich versuche Gerade ein Dropdown Menü zu erstellen, dieses geht über mehrere Spalten und funktioniert auch soweit in allen Browsern. Was mich stört ist, dass es nicht gehen dürfte, da nicht HTML valide. Leider kann ich das Problem aber nicht lösen. Hier das TS:
#########################
# Navigation #
#########################
temp.NAVIGATION = COA
temp.NAVIGATION {
wrap = <ul id="menu">|</ul>
10 = HMENU
10 {
1 = TMENU
1 {
expAll = 1
noBlur = 1
NO = 1
NO.wrapItemAndSub = <li>|</li>
IFSUB = 1
IFSUB.wrapItemAndSub = <li>|</li>
IFSUB.after.wrap = <div class="dropdown_4columns">
IFSUB.ATagParams = class="drop"
}
2 = TMENU
2 {
expAll = 1
noBlur = 1
NO = 1
NO.doNotShowLink = 1
}
3 = TMENU
3 {
wrap = <div class="col_1"><ul>|</ul></div>
NO.wrapItemAndSub = <li>|</li>
}
}
}
sobald ich diese Zeile schließe:
IFSUB.after.wrap = <div class="dropdown_4columns">|</div>
Zerlegt es mir den Code.
Hier der Seitenbaum, das Menü und die Fehler. Die 2 Ebene soll ausgelassen werden.
Bild: s7.directupload.net/…/rmz4773o.png
Bild: s7.directupload.net/…/aokljaan.png
Bild: s1.directupload.net/…/qh5kswqk.png
Vielen Dank für eure Hilfe
MfG
Naja eigentlich sollte sich doch mit den Fehlermeldungen die Sache finden lassen.
Poste doch trotzdem mal das generierte HTML. Ich für meinen Teil sehe jetzt in dem TS nicht gleich einen Fehler.
Was genau ist denn angestrebt?
IFSUB.after.wrap = <div class="dropdown_4columns">
Ich würde mal vermuten das hier nach dem schließen des jeweiligen LI-Tags ein DIV geöffnet wird, was irgendwann durch den Browser automatisch geschlossen wird. Wenn du dieses DIV nun selbst schließt wird nach jedem </LI> das DIV eingefügt, was nicht W3C valide ist, denn das DIV gehört IN den LI-Tag oder UM den UL-Tag. Mit "after" wird ein cObject nach dem jeweiligen IFSUB-Eintrag eingefügt, warum also nicht dieses DIV in den IFSUB.wrapItemAndSub mit aufnehmen? Oder wo genau soll das DIV hin?
Das Dropdown Menü wurde nicht von mir erstellt, weshalb ich den Quellcode so übernommen habe. Das DIV "<div class="dropdown_4columns">" soll jeweils nach einem LI erscheinen welches Unterpunkte hat. Irgendwie war ich wohl nicht so ganz klar im Kopf oder bin schon zu lange daran gesessen. Jedenfalls habe ich es gestern noch hinbekommen. Das "after.wrap" ist rausgefallen. Da ich ja auf die dritte Ebene will, lasse ich ganz einfach ab der zweiten einen wrap erstellen "<div class="dropdown_5columns">|</div>" (vorher <div class="dropdown_4columns">|</div>). So funktioniert das ganze und ist auch valide.
Für Leute mit ähnlichem Problem hier die Lösung:
#########################
# Navigation #
#########################
temp.NAVIGATION = COA
temp.NAVIGATION {
wrap = <ul id="menu">|</ul>
10 = HMENU
10 {
1 = TMENU
1 {
expAll = 1
noBlur = 1
NO = 1
NO.wrapItemAndSub = <li>|</li>
IFSUB = 1
IFSUB.wrapItemAndSub = <li>|</li>
IFSUB.ATagParams = class="drop"
}
2 = TMENU
2 {
expAll = 1
noBlur = 1
NO = 1
NO.doNotShowLink = 1
wrap = <div class="dropdown_5columns">|</div>
}
3 = TMENU
3 {
wrap = <div class="col_1"><ul>|</ul></div>
NO.wrapItemAndSub = <li>|</li>
}
}
}
Auch wenn es einfach aussieht, manchmal versucht man es immer auf dem schwierigen weg und ich bin ein Freund von einfachem TypoScript 😉