[Frage] Untermenü an anderer stelle ausgeben [Gelöst] TYPO3-Version: -

  • phlatline phlatline
    TYPO3-Anwärter
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    22. 07. 2014, 18:57

    Hallo zusammen,

    nun beschäftige ich mich schon seit einigen Tagen mit der Problematik alle Untermenüs in einem extra dafür vorgesehenen <div> auszugeben, die Grundidee funktioniert auch soweit, nur besteht folgendes Problem, es wird nur das Untermenü der aktuellen Seite ausgegeben. Vielleicht gibt es die Möglichkeit das ganze in einer art Schleife ablaufen zu lassen oder gibt es gar eine Funktion? Ich und Google sind mit dem Latein am End, vielleicht hat ja jemand von euch so etwas schon einmal realisiert?

    Hier mal der aktuelle Code:

    1. lib.mainNavi=HMENU
    2. lib.mainNavi.entryLevel=0
    3. lib.mainNavi.1=TMENU
    4. lib.mainNavi.1{
    5. wrap=<ul class="first">|</ul>
    6. expAll=0
    7. ATagParams=id="uid{field:uid}"
    8. ATagBeforeWrap=1
    9. linkWrap=|<i class="sprite-menu-arrow"></i><div class="menushadow"></div>
    10. allWrap=<li class="first">|</li>|*|<li>|</li>|*|<li class="last">|</div></li>
    11. ATagParams.insertData=1
    12. }
    13.  
    14. }
    15.  
    16. lib.secondNavi=HMENU
    17. lib.secondNavi{
    18. entryLevel=1
    19.  
    20. wrap=<div class="secondmenu hidden"><div class="container" id="puid{field:uid}"><ul>|</ul></div></div>
    21. 1{
    22. NO=1
    23. wrapItemAndSub=<li class="first">|/<li>
    24. doNotLinkIt=1
    25. }
    26. }
    27. }

    Ich würde mich freuen wenn es evtl. ein paar Anregungen oder Ideen von euch gibt :)

    Viele Grüße

    Sebastian

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    1 x
    2849 Beiträge
    105 Hilfreiche Beiträge
    24. 07. 2014, 07:35 - Lösung

    Für die Sache mit der UID bietet gibt es die Eigenschaft [i]subst_elementUid[/i]:

    If set, all appearances of the string '{elementUid}' in the total element html-code (after wrapped in .allWrap} is substituted with the uid number of the menu item. This is useful if you want to insert an identification code in the HTML in order to manipulate properties with JavaScript.

    Nachdem Du die UID der obersten Ebene benötigst, braucht es die Verwendung also in 1 = TMENU. Nachdem desweiteren der Containe rnur gesetztw erden soll, wenna uf zweiter Ebene auch Inhalte folgen, bietet sich die Nutzung des IFSUB-Zustandes an:

    1. 1.IFSUB = 1
    2. 1.IFSUB.doNotShowLink = 1
    3. 1.IFSUB.allWrap = <div class="subst_elementUid p{elementUid}">|
    4. 1.IFSUB.wrapItemAndSub = |</div>
    5. 1.IFSUB.subst_elementUid = 1

  • Hilfreichster Beitrag

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    1 x
    2849 Beiträge
    105 Hilfreiche Beiträge
    23. 07. 2014, 09:41 - Hilfreichster Beitrag

    Hallo Sebastian.

    Wenn Du alle Untermenüs ausgeben willst, musst TypoScript in der subnav alle Eltern-/Hauptseiten kennen. Die eleganteste Lösung dürfte sein, dass Du ein Manü ab Ebene 0 wieder generierst, das mittels expAll die Unterebene für alle aktiv macht (d.h. ausklappt/generiert), jedoch die Ebene 0 selbst nicht anzeigt:

    1. 1 = TMENU
    2. 1.expAll = 1
    3. 1.NO.doNotShowLink = 1
    4.  
    5. 2 = TMENU
    6. 2{
    7. //...
    8. }

    Viele Grüße
    Julian


  • 1
  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    1 x
    2849 Beiträge
    105 Hilfreiche Beiträge
    23. 07. 2014, 09:41

    Hallo Sebastian.

    Wenn Du alle Untermenüs ausgeben willst, musst TypoScript in der subnav alle Eltern-/Hauptseiten kennen. Die eleganteste Lösung dürfte sein, dass Du ein Manü ab Ebene 0 wieder generierst, das mittels expAll die Unterebene für alle aktiv macht (d.h. ausklappt/generiert), jedoch die Ebene 0 selbst nicht anzeigt:

    1. 1 = TMENU
    2. 1.expAll = 1
    3. 1.NO.doNotShowLink = 1
    4.  
    5. 2 = TMENU
    6. 2{
    7. //...
    8. }

    Viele Grüße
    Julian

  • phlatline phlatline
    TYPO3-Anwärter
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    23. 07. 2014, 20:52

    Hallo Julian,

    erst einmal vielen Dank für den Denkanstoß, das war ja nur logisch. Manchmal sieht man den Wald vor lauter Bäumen nicht :)

    Funktioniert so wie gewollt.

    Nun bin ich aber bei dem nächsten Problem, das ich die UID der Elternseite des Submenüs im umschließenden DIV Tag nutzen muss, nur leider funktioniert die variante {leveluid:-1} nicht wirklich. Evtl. hast du da noch einen Tipp?

    1. lib.secondNavi = HMENU
    2. lib.secondNavi {
    3. 1 = TMENU
    4. 1 {
    5. expAll = 1
    6. NO.doNotShowLink = 1
    7. }
    8.  
    9. 2 = TMENU
    10. 2 {
    11. wrap = <div class="secondmenu hidden"><div class="container" id="puid{leveluid:-1}"><ul>|</ul></div></div>
    12. NO = 0
    13. NO {
    14. wrapItemAndSub = <li class="first">|/<li>
    15. }
    16. }
    17. }

    Grüße

    Sebastian

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    1 x
    2849 Beiträge
    105 Hilfreiche Beiträge
    24. 07. 2014, 07:35

    Für die Sache mit der UID bietet gibt es die Eigenschaft [i]subst_elementUid[/i]:

    If set, all appearances of the string '{elementUid}' in the total element html-code (after wrapped in .allWrap} is substituted with the uid number of the menu item. This is useful if you want to insert an identification code in the HTML in order to manipulate properties with JavaScript.

    Nachdem Du die UID der obersten Ebene benötigst, braucht es die Verwendung also in 1 = TMENU. Nachdem desweiteren der Containe rnur gesetztw erden soll, wenna uf zweiter Ebene auch Inhalte folgen, bietet sich die Nutzung des IFSUB-Zustandes an:

    1. 1.IFSUB = 1
    2. 1.IFSUB.doNotShowLink = 1
    3. 1.IFSUB.allWrap = <div class="subst_elementUid p{elementUid}">|
    4. 1.IFSUB.wrapItemAndSub = |</div>
    5. 1.IFSUB.subst_elementUid = 1

  • phlatline phlatline
    TYPO3-Anwärter
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    24. 07. 2014, 21:29

    Hallo Julian,

    ich möchte mich recht herzlich bei dir bedanken, genau so schaut die Lösung meines Problems aus. Das Menü funktioniert nun zu 100% so wie gewünscht.

    Vielen Dank!

    Viele Grüße

    Sebastian

  • 1