Unter /faq/menu-bulletlist ist beschrieben, wie man eine Punktliste generiert.
Hier nochmal das TS:
temp.menu = HMENU
temp.menu {
special = directory
special.value = 1
entryLevel = 0
1 = TMENU
1 {
noBlur = 1
wrap = <ul>|</ul>
NO = 1
NO {
ATagTitle.field = abstract // description // title
wrapItemAndSub = <li>|</li>
}
CUR < .NO
CUR.doNotLinkIt = 1
}
2 < .1
3 < .1
}
Soweit, sogut. Aber gibt es auch eine XHTML-konforme Variante?
Obiges Beispiel erzeugt ja folgenden HTML-Output:
<ul>
<li>Seite 1</li>
<li>Seite 2</li>
<ul>
<li>Unterseite 1</li>
<li>Unterseite 2</li>
</ul>
<li>Seite 3</li>
</ul>
XHTML-konform müsste das Menü so aussehen:
<ul>
<li>Seite 1</li>
<li>Seite 2
<ul>
<li>Unterseite 1</li>
<li>Unterseite 2</li>
</ul>
</li>
<li>Seite 3</li>
</ul>
Hintergrund: Das UL-Element muss innerhalb des LI-Elementes vorkommen.
Man könnte die Untermenüs nochmal in LI-Tags wrappen, aber das ist je auch nicht Sinn der Sache...
2.wrap = <li><ul>|</ul></li>
So bleibt mann aber wenistens XHTML-konform.
Bin aber weiter auf der Suche nach einer adäquaten Lösung. Bin für jede Anregung dankbar.
Ein interessanter Effekt:
Wenn ich meinem Menü sage, es soll das gesamte Menü mit allen Unterpunkten darstellen (und nicht nur die Unterpunkte in der Rootline), wird XHTML-konformer Code erzeugt!
temp.menu.1.expAll = 1
Kann sich da jemand einen Reim drauf machen?
Aber noch ein anderer Ansatz:
Wenn man sich auf einer Unterseite befindet, einfach die Menüpunkte anders wrappen (das abschließende </li> weglassen). Und anschließend bei der zweiten Ebene (die ja dann auch für die dritte übernommen wird) das abschließende </li> mit wrappen:
temp.menu.1.NO.wrapItemAndSub = <li>|
temp.menu.2.wrap = <ul>|</ul></li>
Achtung: ungetestet! Werde es aber mal so ausprobieren und ggf. Bescheid geben.
Frage: wie überprüfe ich, ob ich mich auf einer Unterseite befinde?
Okay, ein Fehler meinerseits: Ich hatte mein TMENU auf ein GMENU umgebaut und da funktioniert natürlich wrapItemAndSub nicht mehr (siehe TS). Mit einem bloßen wrap (wie es jetzt gelöst ist) tritt mein oben beschriebenes Problem auf, mit wrapItemAndSub beim TMENU nicht.
Also: TMENU funktioniert einwandfrei (auch XHTML-konform), GMENU kennt wrapItemAndSub nicht, folglich wird das Untermenu NICHT mit in den Wrap mit einbezogen.
Kann mir da jemand weiterhelfen?
Die zweite Ebene des Menüs soll also später ohne die LI-Tags gewrapt werden (Zeile 36).
temp.menupics {
10 = HMENU
10.special = directory
10.special.value = 1
10.1 = GMENU
10.1.wrap = <ul class="hmenu1">|</ul>
10.1.NO {
XY = 120, 25
backColor = #80CC99
wrap = <li>|</li>
# wrapItemAndSub = <li>|</li> --> Funktioniert nicht beim GMENU
ATagTitle.field = abstract // description // title
10 = TEXT
10.text.field = abstract // description // title
10.fontColor = #006633
10.fontFile = fileadmin/DINMI___.TTF
10.align = center
10.fontSize = 16
10.niceText = 1
10.offset = -2, 17
}
10.1.RO = 1
10.1.RO < temp.menupics.10.1.NO
10.1.RO {
10.fontColor = #ffffff
}
10.1.ACT = 1
10.1.ACT < temp.menupics.10.1.NO
10.1.ACT {
5 = IMAGE
5.file = fileadmin/menu-reiter.gif
10.fontColor = #ffffff
10.offSet = -2, 18
}
10.2 < temp.menu.2
10.2.wrap = <li><ul class="hmenu2">|</ul></li>
10.2.CUR.doNotLinkIt = 0
10.2.CUR.wrapItemAndSub = <li class="current">|</li>
}
Okay, ein verwirrender Monolog, aber jetzt will ich die Sache zumindest zuende bringen:
Hier also das TypoScript:
10.1.ACTIFSUB = 1
10.1.ACTIFSUB < temp.menupics.10.1.ACT
10.1.ACTIFSUB {
wrap = <li>|
}
Und die Zeile 36 (siehe vorheriges Posting) muss so aussehen:
10.2.wrap = <ul class="hmenu2">|</ul></li>
Zur Theorie:
- Wenn Unterpunkte da sind (ACTIFSUB), dann mache das LI-Tag nur auf.
- Und in der Zweiten Menüebene muss das LI-Tag dann einfach wieder geschlossen werden (hinter dem UL-Tag).
Das war aber eine schwere Geburt...
Tja, manchmal sieht man den Wald vor lauter Bäumen nicht!