WordPress als CMS

Ich habe in den letzten Tagen an der Umsetzung einer neuen Webseite gearbeitet. Ziel war es, WordPress als Content Management System einzusetzen. Entgegen der Verwendung als Blogsystem stehen dann natürlich die statischen Seiten im Vordergrund und nicht so sehr die Blogging-Funktionen. Dabei ist natürlich die Bearbeitung der Inhalte etwas eingeschränkt, da es für jede Seite nur ein Eingabefeld gibt. In anderen Content Management Systemen wie etwa TYPO3 lassen sich mehrere Absätze innerhalb einer Seite anlegen. Außerdem werden mehrer Spalten auf einer Seite unterstützt, welche sich bequem im Backend (der Benutzeroberfläche) anlegen und auch von ungeübten Nutzern bearbeiten. Wie es aber trotzdem möglich ist, klassische Firmenwebseiten in WordPress aufzubauen, schreibe ich hier.
Zunächst geht es um die Struktur der Seite, die möglichst dynamisch angelegt sein soll, so dass das Hinzufügen, Verschieben und Ändern von Seiten innerhalb von WordPress geschehen kann. Es verbietet sich also somit, feste Links in die Menüs einzufügen.
Die Seiten anzulegen und die Struktur aufzubauen ist erst einmal kein Problem, hier gibt man beim Anlegen der Seiten die Reihenfolge an. So kann man die Seiten sehr einfach in verschiedenen Hierarchien anlegen.

Die Webseite, die aufgebaut werden sollte, hat eine dreistufige Menüstruktur. In einer Hauptnavigation im Kopfbereich stehen Links zur ersten Ebene, in einem Submenü auf der linken Seite Links zu Seiten der zweiten und dritten Ebene.
Die erste Ebene zu verlinken ist eigentlich kein Problem, hier reicht die Codezeile:


<?php wp_list_pages('title_li=&child_of=0&depth=1'); ?>

, um Links zur ersten Ebene zu erzeugen. Für das Submenü (2. und 3. Ebene) habe ich zuerst auf die Funktion „wp_list_pages“ zurückgegriffen, was auch grundsätzlich funktioniert. Jedoch wurden mit dem Script, welches ich verwendete, ab der dritten Ebene die Links zu den Seiten der zweiten Ebene nicht mehr angezeigt.

Hier bietet das PlugIn „Fold Page List“ Abhilfe. Mit diesem PlugIn können Navigationen realisiert werden, die erst auf Klick die Unterseiten anzeigen.
Trotzdem ist auch hier noch eine etwas komplexere PHP-Abfrage notwendig, um die Navigation korrekt hinzubekommen.


<?php
$g_page_id = $wp_query->get_queried_object_id();
$ancestorIDs = _wswwpx_page_get_ancestor_ids($g_page_id);
$grandParent = $ancestorIDs[1];
wswwpx_fold_page_list("title_li=&sort_column=menu_order&child_of=".$grandParent);?>

fragt zunächst alle Page-IDs ab, ermittelt daraus alle IDs der Unterebenen und gibt dann alle „Kinder“ über das PlugIn aus. Das Schöne daran ist, dass die Links zur dritten Ebene auch erst nach Klick angezeigt werden, also sich erst „aufblättern“, wenn es notwendig ist.

Als weiteres Problem stellte sich heraus, dass ich veränderbare Inhalte zu den Seiten hinzufügen wollte. Wie oben schon beschrieben, hat WordPress keine Funktion, mehrere Spalten in der Eingabemaske zu verwalten. Es gibt aber die „Spezialfelder“, mit denen man eine ähnliche Funktion einbauen kann. Für Text ist das kein Problem, hier kann man auf „<?php the_meta(); ?>“ zurückgreifen, welches alle Inhalte der Spezialfelder als Liste ausgibt. Der Name des Spezialfeldes wird dabei auch mit ausgegeben und mit einer Span-Klasse markiert. So konnte ich zum Beispiel einen Kasten in einer Spalte aufbauen, auch wenn dabei noch ein klein wenig Code in der Eingabe notwendig war.

UPDATE: Für die Einbindung von weiterem Content bietet sich übrigens auch das PlugIn „Secondary HTML Content“ an! Dieses PlugIn einfach installieren und man hat eine komfortable Möglichkeit, Text in einen weiteren Inhaltscontainer einzuladen. Im Template muss dann über die Funktion „get_secondary_content()“ der Inhalt eingebunden werden. Somit entfällt der bei umfangreicheren Texten doch recht mühselige Umgang mit den „Custom fields“.

Ein Nachteil dieser Lösung ist aber, dass die Funktion von WordPress alle Spezialfelder in einer Liste ausgibt. Nun sollte aber jede Seite auch noch mit einer individuellen Kopfgrafik aufgebaut werden, die VOR der Seitenüberschrift im Quelltext auftauchen sollte. Ich konnte diese Bilder also nicht über den Artikel einfügen, denn damit hätte ich das gewünschte Layout nicht hinbekommen und das Bild erschien unterhalb der Seitenüberschrift.

Mit dem PlugIn „Get Custom Field Values“ kann man Werte aus den Spezialfeldern auslesen und innerhalb eines Loops verwenden. So hatte ich die Möglichkeit, je ein Spezialfeld für die individuellen Kopfbilder und die rechten Spalten anzulegen, ohne daß über „the_meta()“ gleich alle Inhalte angezeigt werden.

Innerhalb des Loops gebe ich dann Folgendes über der Seitenüberschrift aus:


<?php echo c2c_get_custom('NameDesFeldes', '<img class="NameDerKlasse" src="PfadZuDenBildern', '.jpg" />', 'blank'); ?>

Damit lese ich das Feld „Name des Feldes“ aus und erzeuge den Quelltext für die Einbindung des Bildes. Im Spezialfeld für das Kopfbild braucht man jetzt nur noch den Bildnamen einzugeben. Ach ja, die Bildverwaltung mache ich dann über das sehr schöne PlugIn „NextGEN Gallery„. In der Albumübersicht kann der Pfad und auch der Bildname sehr einfach ermittelt werden.

Hier ein Link zur Webseite, um die es dabei ging: www.susan-reinhold.de

18 Responses