Blaubart: Array in Array und Submenu mit "unendlicher" verschachtelung

Beitrag lesen

Tach.

50 Zeilen verantwortlicher Code:
(Neues Ziel ist eine unendlich tiefe verschachtelung, lohnt es, auf diesen Code aufzubauen oder besser neu anfangen?)

Du mußt bloß unendlich viele dieser foreaches ineinander schachteln. ;)

Momentan hast Du ziemlich viele redundaten Informationen in Deiner Navigationsstruktur. Ich glaube, Dein gesamtes Vorhaben wird einfacher, wenn die die Pfade zu den einzelnen Einträgen genau dem Weg durch den Navigationsbaum entsprechen:

/
    home/
    equipment/
        einstellungen/
        insider-tips/
    beatjuggling/

Die insider-tips sind also unter "/equipment/insider-tips/" zu erreichen. Jeder Eintrag weiß dann nur noch, wie er selber heißt und welche Kinder er hat.

[
    {
        "title"    => "Home",
        "path"     => "home",
        "children" => []
    }
    ,{
        "title"    => "Equipment",
        "path"     => "equipment",
        "children" => [
            {
                "title"    => "Justage",
                "path"     => "einstellungen",
                "children" => []
            }
            ,{
                "title"    => "Tips und Tricks",
                "path"     => "insider-tips",
                "children" => []
            }
        ]
    }
    ,{
        "title"    => "Beat Juggle",
        "path"     => "beatjuggling",
        "children" => []
    }
]

Oder so ähnlich. :)

Du kannst den Pfad aus $_SERVER["REQUEST_URI"] stückweise von links nach rechts abarbeiten und für jedes "Verzeichnis" eine Ebene tiefer in Deinem Navigationsbaum absteigen, falls der Verzeichnisname an der aktuellen Stelle im Pfad steht. Ansonsten werden einfach alle Einträge der momentanen Ebene in die Ausgabeliste übernommen. Genau das gleiche Spiel dann im Unterverzeichnis (Rekursion), bis das Ende des Pfades erreicht wurde oder der Navigationsbaum nicht mehr damit übereinstimmt. Falls das Pfadende erreicht wurde und das aktuelle Verzeichnis Unterverzeichnisse hat, machst Du noch einen Schritt tiefer, um diese Kinder ebenfalls in Deine Ausgabeliste aufzunehmen.

Das alles erpart Dir auch den gedoppelten "Index der gewählten Rubrik", den Du bisher zum Ausklappen verwendest. Und wenn's keine Kinder gibt, wird nichts ausgeklappt – das war ja das ursprüngliche Problem, wenn ich's richtig verstanden habe.

--
Once is a mistake, twice is Jazz.