WordPress als CMS – automatische Child-Pages-List

WordpressWordPress ist zwar ein klassisches Blog-System, doch kamen findige Menschen bereits vor Jahren auf die Idee, es auch als CMS einzusetzen. Mit der vor wenigen Stunden erschienenen Version 2.1 und der Möglichkeit, feste Startseiten zu definieren, fördern die Programmierer exakt diese Entwicklung. 

Basierend auf den hervorragenden Tutorials des Buchautors Perun erstellte ich ein persönliches Proof-of-Concept. Hier zeigte sich allerdings ein Problem: Auch wenn der Ansatz Peruns, sämtliche Inhalte über Pages zu realisieren, schlüssig ist, und die Möglichkeit, für jede Page ein eigenes Template zu erstellen, wundervolle Möglichkeiten bietet, so hat die von ihm gewählte Methode bei größeren Projekten einen Nachteil. 

Denn Perun erzeugt in seinen Beispielen für jede Hauptelement ein eigenes Template. Für ein Projekt mit wenigen Hauptkategorien mag dies noch angehen. Was aber, wenn ein Projekt wie das Meine allein 16 Hauptkategorien enthält? Also 18 Pagetemplates, wenn man Impressum und Sitemap dazurechnet?  Wenn das Layout hier im Grunde gleich sein soll, erscheint mir dies überflüssig und schlecht in der Pflege.

Das einzige wirklich relevante Unterschied liegt nämlich im Aufruf der jeweiligen Subnavigation, der Anzeige der gelisteten untergeordneten Pages. Und hier bietet es sich an, dies alles PHP zu überlassen.

Umsetzung

Es wird ein Template erstellt, das für alle Pages verwendet werden soll. Ganz oben steht dann beispielweise:

<?php
/*
Template Name: Allpages
*/
?>

An der Stelle, an der die jeweilige Subnavigation erscheinen soll, wird nun folgendes eingefügt:

<ul>
<?php
for ($i=1;$i<30;$i++)
{
    if(is_page($i))
    {
        $dings = "sort_column=menu_order&title_li=&child_of=".$i;
        wp_list_pages($dings);
    }
}
?>
</ul>

Dabei ist die Zahl 30 willkürlich gewählt, wer mehr Hauptpages verwendet (bzw. wenn diese bereits in einem höheren ID-Bereich liegen), kann diesen Wert auch höher setzen.

Nun wird in der Verwaltung jeder Page das Template "Allpages" zugewiesen. Fertig.

Viel Spaß damit. Bitte Tutorial nicht kopieren, sondern hierhin verlinken. Ich danke meinem Bruder Buckaroo für seine Unterstützung beim Austüfteln dieser Lösung.

Kommentar (1) Schreibe einen Kommentar

  1. Hervorragende Lösung!!
    Genau das was ich suchte. Vielen Dank!

    Hilfreich wäre noch, wenn die zugehörige Parent-Page ebenfalls gelistet würde.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.