Zum Inhalt springen

Unternavigation ausblenden wenn nicht in gebrauch

Erstellt am 25. Januar 2005 · 8 Antworten · letzte Antwort am 21. April 2010

Tags: Frage

tuor ·

In meinen CSS/XHTML Layout habe ich im Content-Bereich 25% der Breite reserviert für die Unternavigation. Nun ist es so das ich gerne die Unternavigation einfach weglassen würde wenn keine menüpunkte vorhanden sind, sodass 100% der Breite für den Inhalt zur Verfügung steht (statt 75%).

Mit CSS krieg ich das einigermassen hin mit dem Float Befehl. Die Unternavigation wird, falls vorhanden, dann vom Inhaltstext umflossen.

Ich habe eher an eine Typoscript-Lösung gedacht. Vielleicht mit hilfe von stdWrap??

Der Code würde heissen:

Falls keine Unternavigation vorhanden ist, den div-tag vom Content-Bereich ändern.

Oder ist meine Anforderung zu Banal? Habe ich eine simple Lösung übersehen?

jweiland ·

Mit den IFSUB Eigenschaften der Menüs kann man unterschiedliche Formatierungen vornehmen, je nachdem ob Unterseiten vorhanden sind oder nicht.

Jochen Weiland

tuor ·

Ich hab's hingekriegt, danke für den Tipp.

temp.submenu = HMENU
temp.submenu {

  entryLevel = 1

     1 = TMENU
     1 {
        wrap = <ul id="navlist">|</ul>
        expAll = 1
        IFSUB = 1
        IFSUB.allWrap = <li class="navlist_ifsub">|</li>
        NO.linkWrap = <li class="navlist_no">|</li>
        }

     2 = TMENU
     2 {
       wrap = <ul class="subnavlist" | </ul>
       expAll = 1
       IFSUB = 1
       IFSUB.allWrap = <li class="subnavlist_ifsub">|<li>
       NO.linkWrap = <li class="subnavlist_no">|</li>
       }

      3 < .2
      4 < .2
      5 < .2
      6 < .2
}
dyne ·

Ich möchte ebenfalls das Submenü ausblenden, wenn keine Unterseiten existieren.
Mein Submenü ist aber nicht im Hauptmenü verschachtelt sondern ist eigenständig.

Meine Menüs sind bisher TS-technisch nichts besonderes:

###Hauptmenü###

lib.mainMenu = HMENU
lib.mainMenu{
  entryLevel = 0
  wrap = <ul id="nav">|</ul>
  1 = TMENU
  1{
    NO.wrapItemAndSub = <li class="first">|</li> || <li>|</li> 
    ACT = 1
    ACT.wrapItemAndSub = <li class="first act">|</li> || <li class="act">|</li>
  }
}

###Untermenü###

lib.subMenu = HMENU
lib.subMenu{
  entryLevel = 1
  wrap = <div id="snbg"><div id="sncontainer"><ul id="subnav">|</ul></div></div>
  1 = TMENU
  1{
    NO = 1
    NO.wrapItemAndSub = <li class="first">|</li> || <li>|</li>
    CUR < .NO
    CUR.wrapItemAndSub = <li class="first act">|</li> || <li class="act">|</li>
    ACT < CUR
  }
}

Ich habe schon versucht, das Submenü von einer [treeLevel=1]-Condition zu umschließen, ist aber Unfug, da treeLevel nicht die verfügbare Anzahl an Levels beinhaltet sondern das aktive Level.

Was kann ich tun?

Edit:

Als "dirty" Lösung habe ich jetzt folgendes gebaut:

[PIDinRootline = 32,31,29,28,25]
### Definition des Submenü...###
[global]

Wobei das PIDs der Seiten mit Unterseiten sind. Müssen aber natürlich in dem Fall per Hand gepflegt werden, was ich eigentlich gerne vermeiden möchte.
Hat noch jemand eine "saubere" Lösung?

d.​walter ·

Hallo dyne,

du könntest versuchen, dein Untermenü in ein COA zu packen und dann mit einem div wrappen.

Wenn kein Untermenü da ist, wird das div dann auch nicht ausgegeben.

Daniel

dyne ·

Ich glaube dich hat meine Zeile

wrap = <div id="snbg"><div id="sncontainer"><ul id="subnav">|</ul></div></div>

ein wenig verwirrt. Diese Verschachtelung gehört tatsächlich zum Menü, soll also auch weggelassen werden, wenn keine Submenüpunkte vorhanden sind.

Was mir fehlt ist so etwas wie eine Condition [IFSUB || treeLevel=1] also "Falls die Seite eine Unterseite hat oder ist, zeige das Submenü an".

Julia1 ·

Hallo,

ich möchte den Thread mal wieder hoch holen. Gibt es für das Problem mittlerweile eine Lösung? Ich suche auch nach einer Condition, die nur greift, wenn eine Unterseite vorhanden ist. Gibt es denn dafür keine Lösung?

LG
Julia

citizenkane ·
lib.subMenu = HMENU

lib.subMenu{

  entryLevel = 1

  stdWrap.wrap = <div id="snbg"><div id="sncontainer"><ul id="subnav">|</ul></div></div>
 
  stdWrap.required = 1 

  1 = TMENU

  1{

    NO = 1

    NO.wrapItemAndSub = <li class="first">|</li> || <li>|</li>

    CUR < .NO

    CUR.wrapItemAndSub = <li class="first act">|</li> || <li class="act">|</li>

    ACT < CUR

  }

}

so sollte das gehen

elezar ·

Guten Morgen,

Ich springe einfach mal auf das Thema auf:
Ich habe ein ähnliches Problem, nämlich ein Submenu auf der linken Seite, das ich gerne ausgeblendet hätte wenn keine Subpages vorhanden sind. Trotz der Anregungen hier bekomme ich das nur leider nicht hin...
Daher hier mein Hilferuf!!!
Schon einmal vielen Dank im voraus!

temp.menulinks = HMENU
#temp.menulinks.wrap = <h3>Submen¸</h3>|
temp.menulinks.entryLevel = 1
temp.menulinks {
	1 = TMENU
	1 {
		noBlur = 1
		expAll = 1
		wrap = <ul>|</ul>
		noBlur = 1
		NO {
			wrapItemAndSub = <li>|</li>
			ATagParams = 
			ATagTitle.field = description // title
		}
		ACT=1
		ACT {
			wrapItemAndSub = <li id="nav-active">|</li>
			ATagParams =
			ATagTitle.field = description // title
		}
	}

	2 < .1
	2.wrap = <ul>|</ul>
}