Du könntest ein globales Array anlegen anstelle mehrer globler Variablen. Diesem Array gibst Du eine Struktur, z.B. so, dass unter dem URL für jede Seite die Attribute title, descr, usw. greifbar sind.
Alternative zum URL wäre eine numerische ID, beides ergibt einen eindeutigen Schlüssel in deinem Array. Dieses Array wird bei jedem Request, egal welche ID oder URL requestet wurde, komplett in den Hauptspeicher geladen. Danach wird es wieder eingefroren in einer Datei, z.b. in einer ini-Datei, da ist das alles editierbar.
Alles in Einem hat einige Vorteile. Einzelseiten können per Attribut einen Parent haben, so baust Du hierarchische Strukturen und kannst daraus Menus und Breadcrumbs erzeugen. Auf diese Art und Weise kann für einen virtuellen Ordner dein Script die title's auslesen und für die im virtuellen Ordner vorhanden Seite eine Übersicht erzeugen.
Das heißt, mit dem globalen Array ist schon alleine die Navigation kein Thema mehr und diesen Ansatz kannst Du beliebig erweitern.
Deine Seiten haben nun per Konfigurationsdatei Attribute, das ist der erste Schritt in Richtung OOP. Neben title, descr, usw. konfiguriert eines der Attribute den Pfad im Dateisystem zur Template-Datei. Hier bist Du unabhängig vom Document-Root und kannst die Quelle später ändern. Z.B. die ganze Konfiguration in einer Datenbank halten anstelle einer ini-Datei....