Zum Inhalt springen

Unterschiedlicher Wrap für Menue

Erstellt am 3. März 2009 · 8 Antworten · letzte Antwort am 4. März 2009

Tags: Frage

BergBenji ·

Hallo @ all!

Ich bin ein ziemlicher Typo3 neuling.
Wahrscheinlich werden einige bei meinem Problem lächeln.

Folgendes Menue möchte ich realisieren:

MENUEPUNKT 1
-- LINK 1
-- LINK 2
-- LINK 3
-- SUBNAVI 1
-- -- LINK 1.1
-- -- LINK 1.2
MENUPUNKT 2
-- LINK 1
-- LINK 2
-- SUBNAVI 1
-- -- LINK 1
-- -- LINK 2

etc.

Habe nun folgendes zusammengesucht.

## Menu [Begin]
lib.mainMenu = HMENU
lib.mainMenu {
########### 1 Menu
  1 = TMENU
  1 {
     entryLevel = 0
     expAll = 1
     wrap = <ul> | </ul>
     NO {
 	  wrapItemAndSub = <li class="">|</li>
         ATagParams = class="m-parent"
        }
     ACT = 1
     ACT {
 	   wrapItemAndSub = <li class="open">|</li>
          ATagParams = class="m-parent"
         }
}


  2 = TMENU
  2 {  
     entryLevel =1
     wrap = <ul class="hide"> | </ul>

     NO {
         wrapItemAndSub =  <li class="">|</li>
         ATagParams = class=""
        }
     ACT = 1
     ACT {
          wrapItemAndSub = <li class="current">|</li>
          ATagParams = class="m-sb"
          ULTagParams = class="test"
         }
  }
}

##[MENU End]

Soweit funktioniert es auch schon recht gut.
Durch CSS und JAvascript wird beim anklicken eines Menupunktes dieser geöffnet - und ich kann einen Link / Subnavigation auswählen - aber beim wechsel der Seite (zu einem LINK) schliesst er mir das Menü immer wieder.

Mittels IF Abfrage wüsste ich mein Problem zu lösen - finde aber leider nach nun mehrstündiger Suche nicht wirklich eine Lösung.
Vielleicht sehe ich auch den Wald vor lauter Bäuen nicht mehr.

Diese Zeile:

 wrap = <ul class="hide"> | </ul>

müsste ich mittels einer IF Abfrage abfangen. Wenn der Menuepunkt aus 1.ACT Aktiv ist muss im 2 TMENUE der Wrap auf class sub-menue gestellt werden.

Kann mir vielleicht jemand helfen?

Template wurde mit TV umgesetzt.
(Ich kann leider das Layout nicht ändern - da es eine vorgabe ist - welche ich so verwenden muss. Hier mal ein kleiner Ausschnitt)

<ul>
<li class=""><a class="m-sb" href="#">SEITE Z</a>
  <ul class="hide">
   <li><a class="m-ssb" href="#">SEITE X</a></li>
   <li><a class="m-ssb" href="#">SEITE Y</a></li>
   <li><a class="m-ssb" href="#">SEITE XY</a></li>	
  </ul>
</li>
<li class="open"><a class="m-sb" href="#">SEITE XZ</a> <!-- offen -->
  <ul class="sub-menue"> <!-- auch offen -->
   <li><a class="m-ssb" href="#">SEITE XX</a></li>
   <li><a class="m-ssb" href="#">SEITE XY</a></li>
   <li><a class="m-ssb" href="#">SEITE XXY</a></li>	
  </ul>
</li>
</ul>

Vielen Dank im voraus!

Grüße
Benji

just2b ·

Hallo,

du kannst neben NO und ACT auch zB ACTIFSUB definieren und da machst du eben in level1 schon den wrap fürs UL rein und nicht erst in ebene 2

lg georg

BergBenji ·

Viele dank für deine Antwort.
Hatte diesen befehl schon mehrfach gelesen - konnte aber nicht wirklich was damit anfangen.

Habe es jetzt wie folgt probiert - Leider ohne erfolg:

lib.mainMenu {
########### 1 Menu
  1 = TMENU
  1 {
     entryLevel = 0
     expAll = 1
     wrap = <ul> | </ul>
     NO {
 	  wrapItemAndSub = <li class="">|</li>
         ATagParams = class="m-parent"
        }
     ACT = 1
     ACT {
 	   wrapItemAndSub = <li class="open">|</li>
          ATagParams = class="m-parent"
         }

  ACTIFSUB = 1
  ACTIFSUB {
            wrap = <ul class="sub-menue"> | </ul>
           }

}


  2 = TMENU
  2 {  

     expAll = 1
     entryLevel =1
     #wrap = <ul class="hide"> | </ul>

     NO {
         wrapItemAndSub =  <li class="">|</li>
         ATagParams = class=""
        }
     ACT = 1
     ACT {
          wrapItemAndSub = <li class="current">|</li>
          ATagParams = class="m-sb"
         }
  }

  3 = TMENU
  3 {  
     expAll = 1
     entryLevel =2
     wrap = <ul class="open opened"> | </ul>

     NO {
         wrapItemAndSub =  <li class="">|</li>
         #ATagParams = class="m-ssb"
        }
     ACT = 1
     ACT {
          wrapItemAndSub = <li class="current">|</li>
          #ATagParams = class="m-ssb"
         }
  }




}

Gibt es auch sowas wie ACTIFNOSUB also ein befehl der diese umschliessung mit dem UL tag ausführt, wenn der Menuepunkt nicht aktiv ist?

Viele danke im voraus!

Grüße
Benji

Unbekannter Benutzer ·

Es geht immer vom Allgemeinen zum Speziellen, d.h. wenn du ACT definiert hast, gilt das für alle aktiven Punkte, egal ob Untermenü oder nicht. Sobald du jetzt zusätzlich ACTIFSUB definierst, gilt das immer bei ACT mit Untermenü, damit gilt dann ACT nur noch bei keinem Untermenü, daher braucht man ACTIFNOSUB nicht.

BergBenji ·

OK - das habe ich nun Grundsätzlich verstanden.

Dann sollte demzufolge das hier ja stimmen:

lib.mainMenu = HMENU
lib.mainMenu {
###### MENU 1
  1 = TMENU
  1 {
     entryLevel = 0
     expAll = 1
     wrap = <ul> | </ul>
     NO {
 	  wrapItemAndSub = <li class="">|</li>
         ATagParams = class="m-parent"
         wrap = <ul class="hide"> | </ul>
        }
     ACT = 1
     ACT {
 	   wrapItemAndSub = <li class="open">|</li>
          ATagParams = class="m-parent"
          wrap = <ul class="hide"> | </ul>
         }
     ACTIFSUB = 1
     ACTIFSUB {
     wrap = <ul class="sub-menue"> | </ul>
         }
}
###### MENU 2
  2 = TMENU
  2 {  
     expAll = 1
     entryLevel =1
     ##     wrap = <ul class="hide"> | </ul>

     NO {
         wrapItemAndSub =  <li class="">|</li>
         ATagParams = class=""
        }

     ACT = 1
     ACT {
          wrapItemAndSub = <li class="current">|</li>
          #ATagParams = class="m-parent"
          ATagParams = class="m-sb"
         }
  }
###### MENU 3
  3 = TMENU
  3 {  
     entryLevel =2
     wrap = <ul class="open hide"> | </ul>

     NO {
         wrapItemAndSub =  <li class="">|</li>
         #ATagParams = class="m-ssb"
        }
     ACT = 1
     ACT {
          wrapItemAndSub = <li class="current">|</li>
          #ATagParams = class="m-ssb"
         }
  }
}

Aber leider geht es nicht.
Ich arbeite wirklich erst seit kurzem mit Typo3.

Jetzt geht er hin und macht die wrap für die Submenues gar nicht.
Wo liegt der fehler - wenn ich just2b und dich Kitsunet richtig verstanden habe sollte es so wie es nun ist ja eigentlich richtig sein.

Ich weiss nicht weiter bin auch schon seit Gestern daran am basteln - aber irgendwie will es nicht.

Vielen dank und Grüße
Benjamin

Unbekannter Benutzer ·
1 = TMENU
  1 {
     entryLevel = 0
     expAll = 1
     wrap = <ul> | </ul>
     NO {
          wrapItemAndSub = <li class="">|</ul></li>
         ATagParams = class="m-parent"
         linkWrap =  | <ul class="hide">
        }
     ACT = 1
     ACT {
           wrapItemAndSub = <li class="open">|</ul></li>
          ATagParams = class="m-parent"
          linkWrap =  | <ul class="hide">
         }
     ACTIFSUB = 1
     ACTIFSUB {
	  wrapItemAndSub = <li class="">|</ul></li>
      ATagParams = class="m-parent"
     linkWrap =  | <ul class="sub-menue">
         }
}

Das sollte eher dem entsprechen was du brauchst, denke ich mal...

BergBenji ·

V I E L E N D A N K !!!

Habe deinen Vorschlag so übernommen und noch ein wenig angepasst.
Nun funktioniert es einwandfrei.

Falls jemand mal ein 3 Tiefen Menue Braucht welches durch UL Vorgaben begrenzt ist.

lib.mainMenu = HMENU
lib.mainMenu {
###### MENU 1
  1 = TMENU
  1 	{
         entryLevel = 0
         expAll = 1
         wrap = <ul> | </ul>
    
        NO {
            wrapItemAndSub = <li class="">|</li>
            ATagParams = class=""
            }
        
        IFSUB = 1
        IFSUB {
            wrapItemAndSub = <li class="">|</ul></li>
            ATagParams = class="m-parent"
            linkWrap =  | <ul class="hide">
            }
        
        ACT = 1
        ACT {
            wrapItemAndSub = <li class="">|</li>
            ATagParams = class="m-parent"
            linkWrap =  | 
            }
        ACTIFSUB = 1
        ACTIFSUB {
            wrapItemAndSub = <li class="open">|</ul></li>
            ATagParams = class="m-parent"
            linkWrap =  | <ul class="sub-menue">
            }
    }

###### MENU 2
	2 = TMENU
	2 	{  
         expAll = 1
         entryLevel =1
            NO {
                wrapItemAndSub = <li class="">|</li>
                ATagParams = class=""
                }
            IFSUB = 1 
            IFSUB {
                wrapItemAndSub = <li class="">|</ul></li>
                ATagParams = class="m-sb"
                linkWrap = | <ul class="open hide">
                }
            ACT = 1
            ACT {
                wrapItemAndSub = <li class="current">|</li>
                ATagParams = class=""
                 }
            ACTIFSUB = 1
            ACTIFSUB {
                wrapItemAndSub = <li class="current">|</ul></li>
                ATagParams = class="m-sb"
                linkWrap = | <ul class="open opened">
            }
      }


###### MENU 3
	3 = TMENU
    3 	{  
            entryLevel =2
        NO {
            wrapItemAndSub =  <li class="">|</li>
            }
        ACT = 1
        ACT {
            wrapItemAndSub = <li class="current">|</li>
            }
  		}
}

Vielen vielen dank!!!

Grüße
Benjamin

BergBenji ·

Aber eine frage hätte ich da noch nur zum verständniss:

Wie kommen die Links dann in den <ul> bereich.
Ich habe es so verstanden das das wrapItemAndSub nur das '|' durch die Links ersetzt.

Hat jemand vielleich lust mir das zu erklären.

                wrapItemAndSub = <li class="">|</ul></li>
                ATagParams = class="m-sb"
                linkWrap = | <ul class="open hide">

Vielen dank und Grüße
Benji

Unbekannter Benutzer ·

linkWrap baut etwas um den Link "um den es geht" herum, wrapItemAndSub um den Link und sein Untermenü, d.h. es passiert folgendes (erste Menüebene wird erzeugt):

Link wird zusammengesetzt ->
<a href="index.php?id=XY>SEITENTITEL</a>

linkWrap (da wo | steht kommt der Link hin) ->
<a href="index.php?id=XY>SEITENTITEL</a> <ul class="open hide">

wrapItemAndSub (da wo | steht kommt der Link und das Untermenü hin (und alles was sonst für den Link konfiguriert ist)) ->
<li class=""> <a href="index.php?id=XY>SEITENTITEL</a> <ul class="open hide"> UNTERMENU </ul></li>