Dropdowns erscheinen nicht mehr auf der angeklickten Seite (Firefox)

  • thofei thofei
    T3PO
    0 x
    10 Beiträge
    0 Hilfreiche Beiträge
    01. 12. 2011, 11:28

    Hallo,

    ich habe ein Menü mit Dropdown per TS realisiert und stehe vor dem Problem, dass im Firefox nach einem Klick auf den Menüpunkt, der das Dropdown enthält oder nach einem Klick auf den Menüpunkt im Dropdown die entsprechende Seite zwar aufgerufen wird, aber hier das Dropdown nicht mehr erscheint.

    Also z.B.

    1. Home | Unternehmen | Aussteller | Kontakt
    2. Firma 1
    3. Firma 2

    Klicke ich also auf Home oder Aussteller oder Kontakt, so erscheint das Drodown, wenn ich mit der Maus über Unternehmen fahre. Klicke ich allerdings auf Unternehmen oder Firma1 oder Firma2, wird die entsprechende Seite geladen, das Dropdown erscheint aber nicht mehr, wenn ich mit der Maus über Unternehmen fahre.

    Der Grund für dieses Verhalten liegt prinzipiell darin, dass bei der Erstellung der Listen, die die Navigation enthalten, das Listenelement, welches die Unterliste enthält, zu früh geschlossen wird, also bevor die Unterliste anfängt.

    Statt dem richtigen

    1. <li> <ul> ... </ul> </li>

    wird
    1. <li></li></ul> ... </ul>

    erzeugt. Dies führt im Firefox dazu, dass das Untermenu gar nicht mehr angezeigt wird, der Internet Explorer ignoriert diesen fehlerhaften HTML-Code offensichtlich.

    Das habe ich per IFSUB in der ersten Ebene gelöst, in dem ich dort beim Wrap das schliessende </li> einfach weglasse, aber für die Seiten, die das enthalten, greift das offensichtlich nicht mehr.

    Hier mein verwendetes Typoscript

    1. #
    2. # neues Menu
    3. #
    4. subparts.HAUPTMENU = HMENU
    5. subparts.HAUPTMENU {
    6.  
    7. ### Erste Ebene ###
    8. 1 = TMENU
    9. 1 {
    10. expAll = 1
    11. NO.wrapItem = <li>|</li>
    12.  
    13. # Wenn Untermenü vorhanden, kein schliessendes </li>
    14. IFSUB = 1
    15. wrapItemAndSub = <li>|
    16. }
    17.  
    18. ACT < .NO
    19. ACT = 1
    20. ACT.ATagParams = class="active"
    21. }
    22.  
    23. ### Zweite Ebene ###
    24. 2 = TMENU
    25. 2 {
    26. wrap = <ul>|</ul>
    27. NO.allWrap = <li>|</li>
    28. }
    29. }
    30.  
    31. # Ende neues Menü

    Falls also jemand eine griffige Idee hat, wie ich das Drodown immer und überall anzeigen lassen kann, wäre ich sehr dankbar :)

    Vielen Dank
    Thomas


  • 1
  • thofei thofei
    T3PO
    0 x
    10 Beiträge
    0 Hilfreiche Beiträge
    01. 12. 2011, 14:34

    Könnte es in der Zwischenzeit durch weiteres Rumexperimentieren lösen, ein weiteres ACTIFSUB führt dazu, dass auch in den durch das Dropdown aufgerufenen Seiten das Dropdown selbst erhalten bleibt.

    1. wrapItemAndSub = <li>|
    2. }
    3.  
    4. IFSUB = 1
    5. wrapItemAndSub = <li>|
    6. }

  • Chrissli Chrissli
    Jedi-General
    0 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    01. 12. 2011, 22:50

    Hallo thofei,

    nichts gegen dein TS, aber warum
    machst du so was wie <li>-Tag offen stehen zu lassen?
    Zumal ich nicht sehen kann, wo dieser bei den Unterseiten
    wieder geschlossen wird.
    Versteh' mich nicht falsch, ich will nur nicht, dass du dich
    auf die Auto-korrektur (d)eines Browsers verlässt und irgendwann
    mal ein riesen Problem bekommst.

    Ich mach das immer so ( Beispiel meiner Hauptnavigation:

    1. temp.nav_main = HMENU
    2. temp.nav_main {
    3. special = directory
    4. special.value = 1 #das ist meine rootpage, die macht nur eine weiterleitung auf die erste unterseite, dh.
    5. #alles darunter ist im Menu enthalten, soweit nicht explizit ausgeblendet
    6. #kann man natuertlich auch dynamisch gehalten werden
    7.  
    8. 1 = TMENU
    9. 1 {
    10. expAll = 1 # damit werden alle elemente ausgeklappt, damit das dropdown menu per css realisiert wird
    11. NO = 1
    12. NO.wrapItemAndSub = <li>|</li>
    13. NO.stdWrap.htmlSpecialChars = 1 #fuer die Umlaute in menuenamen
    14. ACT < NO
    15. }
    16. 2 < .1
    17. 2.wrap = <ul>|</ul>
    18. 3 < .2
    19.  
    20. wrap = <div class="menu"><ul id="navigation">|</ul></div>
    21. }

    Vielleicht ist dir das eine Hilfe

    God's in his heaven, all's right with the world

  • thofei thofei
    T3PO
    0 x
    10 Beiträge
    0 Hilfreiche Beiträge
    02. 12. 2011, 09:57

    Hallo Chrissli,

    prinzipiell hast du natürlich recht, in meinem speziellen Fall ist das aber anscheinend doch irgendwie anders. Ich hab dein TS bzw. andere Varianten davon, die man ja zuhauf im Internet findet, ausprobiert und ich hab eben das Problem, dass das Listenelement, welches eine weitere untergeordnete Liste enthält, einfach zu früh geschlossen wird. Aus dem Grund arbeite ich mit diesem Workaround (mag eventuell an der speziellen Typo3-Installation hier liegen, die ich von jemanden anders übernommen habe, aber da hab ich momentan keinen grossen Einfluss darauf, dass irgendwie komplett neu aufzusetzen).

    Der resultierene HTML-Code ist übrigens konform, die Listenelemente werden trotzdem richtig geschlossen, im Moment reicht mir das, wobei ich natürlich schon mal bei genügend vorhandener Zeit das in Ruhe durchforsten sollte, warum sich diese Typo3-Installation so verhält.

    Danke aber für dein TS :)

    Viele Grüße
    thofei

  • 1