Zum Inhalt springen

Punktliste XHTML-konform?

Erstellt am 7. Juni 2005 · 4 Antworten · letzte Antwort am 11. Juni 2005

Tags: Frage

adventuremaker ·

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.

adventuremaker ·

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.

adventuremaker ·

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?

adventuremaker ·

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>
}
adventuremaker ·

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!