Wordpress: abhängige Submenüs mit wp_nav_menu()

boykottke

Mitglied
Hallo an alle,

normalerweise bin ich, geb ich gerne zu, ziemlich TYPO3-affin. Als ausgewachsenes CMS bietet es ja schier unbegrenzte Möglichkeiten, auch wenn es etwas ressourcenhungrig ist und ziemlich komplex in der Konfiguration.

Genau diese Komplexität ist der Grund, warum ich mich nun mit Wordpress beschäftige: Ich arbeite an einem kleinen ehrenamtlichen Projekt, ein Template im "Coporate Design" in diverse Content Management Systeme zu überführen und diese dann als kleine "all inklusive" Lösung zum Download anzubieten, damit Mitglieder ihre Homepages im "CD" selbstgehostet aufsetzen und gestalten können, ganz ohne komplexe Konfiguration oder hohen Systemansprüchen. Um eine solche easy-go-lösung anzubieten, drängt sich ja Wordpress förmlich auf.

Nun das Problem: Das Coporate Design ist ein klassisches Produkt für TYPO3 und macht auch das, was TYPO am besten kann: Menüs aufspalten.

So hat Hauptmenü, Submenü der zweiten Ebene und Submenü ab der dritten Ebene jeweils eine eigene Platzierung innerhalb des Templates.

Nun ist mir bekannt, dass es zumindest mit wp_list_pages(), ein Menü ab zweiter Ebene zu gestalten, also zumindest ein Submenü zu produzieren. Allerdings ist die Möglichkeit, Sortierreihenfolgen festzulegen, eher suboptimal.

Mit wp_nav_menu() ist ja ab Version 3 nun endlich eine flexiblere Möglichkeit dazugekommen. Nur gibt es einen Haken: zwar kann man mit wp_nav_menu() eine Höchsttiefe (depth) festlegen, aber keinen Einstiegspunkt (entry level).

Nun ist die große Frage: Wie schafft man es mit den neuen Möglichkeiten der Wordpress-Menüs, Haupt- und relationale Submenüs zu gestalten?

Habt ihr schon mal das Problem gehabt? Wie habt ihr es gelöst?

Vielleicht kann man ja gemeinsam eine Lösungsmöglichkeit gestalten?
 
Hallo, ich habe mir einen Code geschrieben, der abhängig von der aktuellen page immer das Menu einer bestimmten Ebene ausgeben kann.
Vielleicht hilft es dir weiter:


// von der aktuellen ID ausgehend immer die parent IDs ermitteln und eine Array mit diesen IDs erstellen, bis man keinen Parent mehr findet
global $post;
$aktid = $post->ID;
$p0 = get_post( $aktid );
$pfad[0] = $aktid;
$i = 1;
//$pfad = array();
while ( $p0->post_parent == true ) {
$aktid = $p0->post_parent;
$pfad[$i] = $aktid;
$p0 = get_post( $aktid );
$i++;
}

if ( sizeof( $pfad ) > 1 ) {
wp_list_pages('depth=1&title_li=&child_of=' . $pfad[$i-1] . '');
}
else {
wp_list_pages('depth=1&title_li=&child_of=' . $post->ID . '');
}
 
Hallo boykottke,

hast Du inzwischen eine Lösung für das Problem gefunden?
Ich stehe gerade vor der gleichen Fragestellung und finde leider nur Lösungen die entweder buggy sind oder mind. unschönen HTML-Code rausschreiben...
Sofern Du eine Lösung oder einen guten Ansatz gefunden hast, wäre das toll wenn Du das hier mitteilen könntest:)
Dank
soundZ
 
Zurück