Komplexes Collapsing Menü

  • Guten Morgen werte Wordpress Community,

    ich brauche eure Hilfs, Tipps & Anregungen!

    Konkret geht es um ein vertikales Collapsing Menü, wie etwa dass hier.

    Um euch erstmal eine Vorstellung davon zu geben, was am Ende überhaupt herauskommen soll, hier mal ein paar Eckdaten:

    Visueller Eindruck:
    [Blockierte Grafik: http://s1.directupload.net/images/090902/wg686a8z.jpg]

    - Parentpages sollen einen Pfeil bekommen. Wenn man auf ihn Klickt fahren die Childpages aus, dies sollte unendlich Tief funktionieren. (die Parentpage wird dabei nicht aufgerufen)

    - Parentpages sollen aber auch als normale Pages funktionieren. Klickt man nicht auf den Pfeil, sondern auf den Titellink kommt man zur dementsprechenden Page, ohne das das Menü ausfährt. Ist man auf dieser Page ist das Menü entsprechend ausgefahren

    - Das Menü soll auch bei einem erneuten Seitenaufruf in dem Zustand bleiben, in dem der User es hatte. (Ausgefahrene Menüs sollen offen bleiben, Geschlossene geschlossen)


    Jetzt zu meinen Problemen:

    1. Pfeil Problem:

    Da wp_list_pages mir keine Möglichkeit bietet ausserhalb des <a> ein anderes Element, wie in diesem Fall dem Pfeil, unterzubringen habe ich die Sache mit nem kleinen Hack gelöst.

    PHP
    <?php echo preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a>@i', '<li$1><a$2>$3</a><span class="arrow">Pfel</span>', wp_list_pages('echo=0&orderby=name&title_li=')); ?>

    Nun habe ich neben jedem Link einen netten Pfeil.
    Das Problem ist allerdings: Ich möchte dem Pfeil, sinnvoller Weise, nur bei Links sehen die auch Subpages haben. Und es soll eine Pages-mit-Childpages CSS Klasse geben.

    Wie könnte ich diese Unterscheidung zwischen Normalen Pages und Pages die auch Subpages haben, treffen?

    2. Zustandsübergabe

    Wie würdet ihr die vom User ausgewählen Zustände (Aufgeklappt|Zugeklappt) übergeben? Wenn die Seite gewechselt wird / ein neuen Seitenaufruf entsteht. Cookie? JS? Sonstiges?


    Vielen Dank im Voraus!! Ich werde das fertige Menü natürlich hier zum Download anbieten.

    Einmal editiert, zuletzt von n811 (2. September 2009 um 05:15)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Okay,

    das Speichern der Zustände mit Jquery/Cookie Plugin funktioniert soweit. Wer wissen will wie's geht => http://www.scottdarby.com/2009/06/how-to…-cookie-plugin/


    Allerdings ist das das Pfeil-Partentpage Problem noch immer nicht gelöst. :(

    Frage nochmal: Gibt es eine Möglichkeit zu erkennen ob ein Menüpunkt noch Subpages hat?

    Damits am Ende so in etwa aussieht?

  • Ich würde das ja mit CSS machen. Das könnte dann so aussehen;

    HTML-Code:

    Und der dazugehörige CSS-Code

    Code
    #menu li ul { display: none }
    
    
    #menu li:hover ul { display: block }
    
    
    #menu primary a { background: #000000 url(images/pfeilnachunten) no-repeat center right}

    Die Deklaration

    #menu li ul { display: none }

    bewirkt, dass die Unterpunkte ausgeblendet sind, bis man mit der Maus über den übergeordneten Menüpunkt fährt

    #menu li:hover ul { display: block }

    Die Deklaration für den Selektor "#menu primary a" bindet ein "Pfeil nach Unten" in die übergeordnete Schaltfläche ein.

    Wenn du das Menü mit HTML und CSS baust, hast du den Vorteil, dass das Menü auf jeden Fall funktioniert, auch wenn der Besucher deiner Webseite möglicherweise JavaScript deaktiviert hat. Außerdem sparst du dir ein weiteres JavaScript auf deiner Webseite und ich denke, dass die Handhabung mit HTML und CSS einfacher ist. Als abschließendes Beispiel nochmal der gesamte Code für meine Navigation (die derzeit aber nicht verwende, da ich möglichst wenige Menüpunkte verwenden möchte)

    HTML-Code:

    CSS-Code:

  • Okay, aber das ist ja gar nicht das Problem:

    Wie bekomme ich den z.B. deine Klasse :class="primary", nur bei Pages die Kinder haben, ins Menü?

    Ich will die Sache ja nicht Hardcoden sondern per wp_list_pages realisieren.


    In Etwa so:


    Bisher hab ichs nur geschafft den Pfeil hinter JEDES Listitem zu packen

    PHP
    <?php echo preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a>@i', '<li$1><a$2>$3</a><span class="arrow">PFEIL</span>', wp_list_pages('echo=0&orderby=name&title_li=')); ?>


    Ich möchte aber, dass nur Listitems die auch Kinder haben nen Pfeil bekommen...


    Achja für Leute die kein JS haben:

    Zitat

    Diese Seite benötigt Javascript, um korrekt angezeigt zu werden.
    Überprüft eure Browsereinstellungen, um Javascript zu aktivieren.


    Aber darum gehts ja gar nicht....

    Einmal editiert, zuletzt von n811 (9. September 2009 um 16:27)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!