Willkommen!

Wordpress - (k)ein CMS

13.08.2010

Das richtige Tool für den richtigen Zweck: Es wird immer wieder gern und viel über die Nutzbarkeit von Wordpress als CMS diskutiert. Nachdem ich mehr oder weniger gezwungen war, das Blogging-System zur Darstellung und Verwaltung einer Webseite zu nutzen, kann ich das Thema nun aus einer eigenen Perspektive betrachten, eigene Erfahrungen teilen und das ein oder andere Plugin empfehlen.


Gleich vorab: Ich finde, Wordpress ist ein wirklich schickes System. Es ist schnell aufgesetzt, unkompliziert zu verwalten und hat eine Menge nützliche Features - für Blogger.

Will man jedoch eine Webseite für eine Firmenpräsentation erstellen, legt das System durch die lobenswerte Fixierung auf seinen Einsatzzweck - das Bloggen - dem Implementierenden einige Steine in den Weg.

Aufbau der Seitenstruktur

Es ist gar nicht so einfach, einen funktionierenden Seitenbaum aufzubauen und für den Redakteur transparent darzustellen. Zwar erlaubt Wordpress das Anlegen von statischen Seiten und sogar den Aufbau von Hierarchien, aber die Mittel sind bescheiden: über die Seitenattribute Reihenfolge kann man mit einem numerischen Wert die Reihenfolge der Seiten in der Navigation definieren, doch die Wordpress-Autoren schreiben selbst, dass diese Lösung suboptimal ist. Denn: was geschieht, wenn 10, 20 oder 100 Seiten zwischen die erste und zweite Seite einsortiert werden müssen und man "unvorsichtigerweise" bei der Vergabe der Reihenfolge-Werte in Fünferschritten vorgegangen ist? Dann gilt es, die Reihenfolge-Werte für alle bestehenden Seiten neu zu vergeben.

Viele Dinge lassen sich gerade für den Redakteur durch das Einbinden des Plugins CMS Tree Page View einfacher und übersichtlicher gestalten. Die etwas gewöhnungsbedürftige Oberfläche erlaubt Drag-and-Drop, einfachen Zugriff auf die Bearbeitungsfunktion und zeigt onmouseover dankenswerterweise die ID des Datensatzes an - eine Information, die für die Definition der Ansicht des Seitenbaums wichtig wird.

Seitenstruktur für den Besucher sichtbar machen

Die Königsdisziplin im Menüaufbau ist es dann, (mehr als) einen Seitenbaum auf der Webseite anzeigen zu lassen.

Dabei rettete mich Nice Navigation. Um das Plugin einsetzen zu können, muss das verwendete Theme widgetfähig sein.

Man kann die Darstellung der Seitenbäume auch wunderbar beeinflussen, indem man weitere Navigationsvarianten definiert. Das ist über eine Erweiterung des Arrays $arr_looks in nice-navigation/nice-navigation.php um Zeile 34 problemlos möglich - die Varianten explorer und finder sind ja bereits vordefiniert. Die entsprechenden looks werden als Klasse des die jeweilige Navigation wrappenden div gezogen und erlauben individuelles Styling im CSS des Themes. 

Weniger angenehm ist die Konfiguration der zugehörigen Widgets, wenn man wie ich mehr als einen Seitenbaum erzeugen möchte. Zwar nimmt die Navigation im Feld Arguments alle Argumente der Wordpress-Funktion wp_list_pages entgegen und verarbeitet Sie auch komplett, aber die explizite Angabe von auszuschließenden Trees oder Pages bedeutet in letzter Konsequenz, dass man für jede neu angelegte Seite möglichst unmittelbar nach dem Anlegen in mindestens einem der beiden Widgets Parameter hinzufügen muss.

Sobald die Kundenanforderung im Raum steht, die Navigation in einer spannenden Schriftart zu rendern, wird es noch einmal knifflig: Hier folgte ich dem Ansatz von Adham Dannaway und fügte Wrapper um die Links in der Navigation hinzu. Effektvolle aber nicht die sauberste Lösung für diese Anforderung: den Wordpress-Core anpassen; wp-includes/classes.php um Zeile 1203 (Klasse Walker_Page):

//$output .= $indent . '<li class="' . $css_class . '"><a href="' . get_page_link($page->ID) . '" title="' . esc_attr( wp_strip_all_tags( apply_filters( 'the_title', $page->post_title, $page->ID ) ) ) . '">' . $link_before . apply_filters( 'the_title', $page->post_title, $page->ID ) . $link_after . '</a>';
$output .= $indent . '<li class="' . $css_class . '">
<div class="replacedepth_' . $depth . '">
<a class="depth_' . $depth . '" href="' . get_page_link($page->ID) . '" title="' . esc_attr( wp_strip_all_tags( apply_filters( 'the_title', $page->post_title, $page->ID ) ) ) . '">
' . $link_before . apply_filters( 'the_title', $page->post_title, $page->ID ) . $link_after . '</a></div>';

Auf diese Weise schafft man auch gleich die Möglichkeit, im CSS einfach und ohne unendliche Aneinanderreihung von Selektoren auf einzelne Hierarchieebenen zu referenzieren.

Fazit

Wordpress ist ein Klasse Blogging-System und CMS, dessen Funktionen sich durch eine große Menge an verfügbaren Plugins umfassend erweitern lassen. CMS allerdings nur im ursprünglichen Wortsinn: man kann Inhalte pflegen.

Wenn man an diese Inhalte und die Verwaltung derselben aber gehobene Ansprüche hat und nicht primär einen Blog betreiben will, trifft man mit Wordpress die falsche Wahl: der Menüaufbau ist umständlich, eine zentrale Dateiverwaltung sucht man vergebens, und auch die Möglichkeit zur feingranularen Vergabe von Nutzerberechtigungen ist nicht enthalten, um nur einige Beispiele zu nennen.

 


Keine Kommentare

Kommentar hinterlassen