Problem mit der Erstellung einer 3-Ebenen-Navigation

  • Hallo und guten Abend liebe Wordpressler,

    ich hätte da Mal eine Frage. Ich bin gerade dabei Wordpress das erste Mal als CMS für ein kleineres Projekt zu nutzen. Wie üblich arbeitet man in Wordpress ja mit Pages, wenn man es als CMS nutzen will. Um einen Einblick zu bekommen habe ich mir den Quellcode eines bereits vorgefertigten CMS-Templates namens picoCMS (http://stereophone.de/picocms-seo-template-for-wordpress/) angeschaut, welches ich nebenbei anzumerken, sehr gute finde. In diesem CMS-Template ermöglicht folgender Code:


    eine 2-Ebenen-Navigation. Da ich mich nur ein wenig mit PHP und schon garnicht mit Wordpress eigenen Tags auskenne, möchte ich euch bitten mir zu helfen. Wie schon im Titel meines Eintrags hervorgeht, möchte ich eine 3-Ebenen-Navigation erstellen. Ich wäre euch sehr dankbar wenn ihr mir weiterhelfen könntet. Wenn ihr euch die Mühe antut mir zu helfen, dann würde ich euch noch zusätzlich bitten, mir den Quellcode (oben angeführt) für die 2-Ebenen-Navigation zu erklären.

    Mit freundlichen Grüßen
    Simon Kofler

    Einmal editiert, zuletzt von maxe (29. Oktober 2009 um 12:24)

    • 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

  • Also erklären kann ich Dir das jedenfalls schon mal. Bitte Code-.Kennzeichnung benutzen übrigens!

    PHP
    <?php
            global $wp_query;
            if( empty($wp_query->post->post_parent) ) {
      $parent = $wp_query->post->ID;

    wp_query ist das Query-Objekt, welches sich um die DB-Abfrage kümmert. Im if-Zweig wird die ID des Posts selber in die parent-Variable gesetzt, falls der aktuelle Beitrag keinen Parent hat.

    PHP
    } else {
      $parent = $wp_query->post->post_parent;
            }

    Wenn der Beitrag doch einen Parent hat, wird dessen ID in die parent-Variable gesetzt.

    PHP
    wp_list_pages("title_li=&child_of=$parent&depth=1"  );
            ?>

    wp_list_pages ist die Funktion, welche alle Seiten auflistet. Mehr dazu im Codex: http://codex.wordpress.org/wp_list_pages

    mit dem child_of-Argument wird gesagt, dass nur Seiten ausgegeben werden sollen, die Kind der Seite mit der gegebenen ID sind. depth=1 gibt an, dass nur eine Ebene an Seiten ausgegeben wird.

    Bist Du also auf Seite A, dann werden alle direkten Unterseiten von A ausgegeben. Bist Du auf Seite A1, dann werden alle Unterseiten von A1 ausgegeben. Das funktioniert soweit mit beliebig vielen Ebenen: Du siehst immer die Kinder der aktuellen Seite.

    Was Du anpassen müsstest, ist die eventuelle Ausgabe des Parent-Levels und der Links zu den Parent-Seiten.

Jetzt mitmachen!

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