wrap der Body ändern, wenn Submenü existiert

Mittwoch, 01. September 2010

Bei einem Projekt ging es darum, den gesamten Inhalt in Typo3 von einem anderen Wrap zu umgeben, falls ein Untermenü existiert. Im konkreten Fall sollte eine neue Klasse “page_with_subnavi” direkt nach dem Body-Tag erscheinen, falls ein Submenü für den gewählten Menüpunkt existiert.

Wie bei den wohl meisten von Euch wurde im Setup des Seitentemplates der Parser für die Seite in der Variable “page” gespeichert. In diesem Fall haben wir TemplaVoila die Kontrolle übergeben – was aber für das Beispiel nicht relevant ist. Wichtig ist nur: Die verwendete Variable heißt in diesem Beispiel page:

page = PAGE
page {
  typeNum = 0
  10 = USER
  10.userFunc = tx_templavoila_pi1->main_page
}

In diesem Beispiel wird ein einfaches HMENU erstellt und in der Variable lib.sub_navi_left gespeichert:

lib.sub_navi_left = HMENU
lib.sub_navi_left {
   entryLevel = 2
   1 = TMENU
   1.noBlur = 1
   1.wrap = <div class="subnavi">|</div>
   1.NO = 1
   1.NO {
      1.wrapItemAndSub = <li>|</li>
   }
}

Und so wird der Wrap des PAGE-Objektes (bei diesem Beispiel in der Variable “page” gespeichert) verändert, falls die Sub-Navi exisitert:

page.stdWrap {
  wrap = |
  outerWrap = |
  outerWrap.override = <div class="page_with_subnavi">|</div>
  outerWrap.override.if.isTrue.cObject < lib.sub_navi_left
  required = 1
}

Natürlich läßt sich das ganze auch einfach auf die existierende Class eines DIVs anwenden. In diesem Beispiel wurde nicht das PAGE-Objekt verändert, sondern einfach der Text “centerbox” (wenn kein Untermenü existiert) bzw. “centerbox w_subnavi” (falls ein Untermenü existert) in der Variable lib.centerbox_class gespeichert. Diese Klasse wurde denn über TemplaVoila einem DIV als Attribut für “class=” zugewiesen.

lib.centerbox_class = TEXT
lib.centerbox_class {
  value = centerbox
  override = centerbox w_subnavi
  override.if.isTrue.cObject < lib.sub_navi_left
}

Das hier ist noch für Suchmaschinen geschrieben, in der Hoffung jemand findet diese Seite unter den Begriffen, nach denen wir selbst gesucht hatten um die Lösung zu finden: condition wenn untermenü existiert typo3, bei untermenü andere klasse typo3, wenn untermenü anders wrappen typo3