Nur aktiven Menüpunkt anzeigen

Nur den aktiven Menüpunkt anzeigen

Ausgangssituation

Hauptmenü und Untermenü sind getrennt.

Aufgabe

1. Das Untermenü soll nur gewrappt werden, wenn es ein solches gibt.

2. Oberhalb des Untermenüs soll der aktive Hauptmenüpunkt ausgegeben werden.

Lösung

[treeLevel = 0]
[else]
temp.hmenue-akt = HMENU
temp.hmenue-akt {
  entryLevel = 0
  special = directory
  special.value = {$const_start}
  1 = TMENU
  1 {
    noBlur = 1
    NO.wrapItemAndSub = <!-- | -->
    CUR {
      ATagTitle.field = abstract // description // title
      wrapItemAndSub =  <p class="aktiv">|</p>
    }
    CUR = 1
    ACT < .CUR
    ACT = 1
  }
}
temp.umenue = HMENU
temp.umenue {
   entryLevel = 1
   1 = TMENU
   1.noblur = 1
   1.NO {
      linkWrap = |
      wrapItemAndSub = <li>|</li>
      ATagTitle.field = abstract // description // title
   }
   1.ACT < 1.NO
   1.ACT.wrapItemAndSub = <li class="aktiv">|</li>
   1.ACT = 1
   2 < .1
   2.wrap = <ul>|</ul>
}
lib.umenue.10 < temp.hmenue-akt
lib.umenue.20 < temp.umenue
lib.umenue.20.stdWrap {
  wrap = <ul>|</ul>
  required = 1
}
[end]

Bedeutung der Konstante

{$const_start} = Startwert des Hauptmenüs (PID der Startseite)

1. Untermenü nur ausgeben, wenn es Menüpunkte enthält

Das Untermenü wird zunächst als TEMP-Objekt und dann dem LIB-Objket zugewiesen.

Die Anweisung required = 1 (gegen Ende des Listings) erlaubt den Wrap mit UL-Tag nur, wenn das TEMP-Objekt Daten enthält.

2. Nur den aktiven Hauptmenüpunkt ausgeben

Sicher gibt es dafür mehrere Möglichkeiten. Die erste Variante, die uns eingefallen ist, besteht darin, die normalen Hauptmenüpunkte als Kommentar auszugeben. Der aktive Menüpunkt wird in diesem Beispiel in ein P-Tag eingeschlossen (temp.hmenue-akt ...).

Über die TYPO3-Erweiterung sourceopt können Kommentare im BODY-Bereich bequem unterdrückt werden.