Subnavigation in WP

  • Hallo zusammen,

    wenngleich ich mich jetzt seit geraumer Zeit durch Threats und Google lese, finde ich leider keine Möglichkeit mein Problem zu lösen (ggf hab ich auch einfach nur zu wenig Ahnung um gelesenes auf mein Problem anwenden zu können :)).

    Folgende Situation: Ich möchte WP (2.9.2) als CMS nutzen. Dabei werden "Seiten" als ganz normale Homepageunterseiten genutzt.
    Die Navigation habe ich in zwei Teile aufgeteilt: Hauptnavigation (untergebracht im Header) und die Subnavi (untergebracht in page.php).
    Die Subnavi soll mir - abhängig von der gewählten Oberseite - die hierzu gehörenden Unterseiten anzeigen.
    Sollte eine Unterseite weitere Unter-Unterseiten haben, sollen diese - nach klicken auf Unterseite - angezeigt werden.

    Als Beispiel:
    Seite X
    - Unterseite 1
    - Unterseite 1.1
    - Unterseite 1.2
    - Unterseite 2
    - Unterseite 3

    Den Code hierfür habe ich mir soweit auch zusammengesucht und der funktioniert auch.. zumindest fast und damit zu meiner Frage :)
    Ich habe ein Problem mit der Subnavi. Nach klickt auf "Seite X", werden in meiner Subnavi die Unterseiten 1 - 3 angezeigt.
    Klicke ich nun auf Unterseite 1, werden auch die Unter-Unterseiten 1.1 und 1.2 angezeigt.

    ABER :)

    1. Klicke ich als erstes auf Unterseite 1 und es werden im Menü 1.1 und 1.2 angezeigt, sind diese als "link aktiv" markiert
    2. Klicke ich als erstes auf Unterseite 2, wird ebenfalls das Unter-Untermenü 1.1 und 1.2 angezeigt (hier jedoch als "link inaktiv")
    3. hätte ich natürlich gerne, dass das Unter-Untermenü 1.1 und 1.2 zuklappt, wenn ich auf Unterseite 2 oder 3 klicke

    Als Code für das Untermenü, habe ich folgendes verwendet:

    <?php
    if(!$post->post_parent){
    // will display the subpages of this top level page
    $children = wp_list_pages("depth=1&title_li=&child_of=".$post->ID."&echo=0");
    }
    else{
    // diplays only the subpages of parent level
    //$children = wp_list_pages("depth=1&title_li=&child_of=".$post->post_parent."&echo=0");
    if($post->ancestors)
    {
    // now you can get the the top ID of this page
    // wp is putting the ids DESC, thats why the top level ID is the last one
    $ancestors = end($post->ancestors);
    $children = wp_list_pages("title_li=&child_of=".$ancestors."&echo=0");
    // you will always get the whole subpages list
    }

    }
    if ($children) { ?>


    welcher dann etwas später im Quellcode, hierdurch aufgerufen wird:
    <div id="submenu1">
    <ul>
    <?php echo $children; ?>
    </ul>
    </div>


    Falls jemand Ideen oder Anregungen - gerne auch Alternativvorschläge - für mein Problem hat, wäre das super!

    Vielen Dank im voraus!

    Grüße
    derflu

    • 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

  • Ok, mal sehen...

    1. Code bitte auch als solchen kennzeichnen (u.a. der php-Button). Macht es leichter lesbar. :-)
    2. Mach doch erst mal die Ausgabe aller Unternavigationen und bau das Aus- und Einklappen dann rein, wenn die richtigen Navigationen angezeigt werden. Ich habe gerade nicht die Zeit, mich da einzulesen, aber ich verstehe so auf Anhieb jedenfalls nicht, wie Du die Unterseiten ausgeben willst. Und wieso überhaupt so kompliziert: Reicht es nicht, immer wp_list_pages ohne depth aber mit child_of auszugeben und den Rest dann per jQuery zu machen?
    3. Aus- und Einklappen sollte sehr simpel mit wenigen jQuery-Zeilen gehen.

Jetzt mitmachen!

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