Login
Newsletter
Werbung

So, 30. Oktober 2005, 00:00

Web Content Management mit PHP und MySQL

Vorwort

Cover von Web Content Management mit PHP und MySQL

Hans-Joachim Baader (hjb)

Cover von Web Content Management mit PHP und MySQL

Content Management Systeme gibt es wie Sand am Meer, und auch die freien unter diesen haben einen fortgeschrittenen Stand mit enorm vielen Funktionen erreicht. Dennoch ist Michael Schröer der Ansicht, daß ein solches System in den meisten Fällen nicht in der Lage ist, die ganz speziellen Bedürfnisse des Anwenders abzudecken. Seine Lösung: Das ganze CMS selbst schreiben. Davon handelt dieses Buch mit seinen fast 500 Seiten. Wie man sich leicht vorstellen kann, kann man auf so vielen Seiten zwar einiges auf die Beine stellen, aber nichts, was dem Umfang eines der populäreren Systeme nahekommt.

Das Buch

Es ist sicher keine kleine Aufgabe, ein CMS zu schreiben, selbst wenn es nur rudimentäre Funktionen bietet. Schritt für Schritt geht der Autor das Projekt an, wobei er auf PHP 4 und MySQL 4 baut. Wo es Unterschiede zwischen PHP 4 und PHP 5 gibt, wird darauf hingewiesen. Hinweise auf MySQL 5 sind nicht enthalten, da MySQL 5 zum Zeitpunkt der Drucklegung des Buches noch eine Alpha-Version war. Zudem werden nur grundlegende Funktionen genutzt, bei denen es keine nennenswerte Unterschiede zwischen den Versionen geben dürfte. Es lassen sich mit geringfügigen Änderungen auch andere Datenbanken einsetzen.

Wie beginnt man nun ein CMS? Wie bei jedem Entwicklungsprojekt sollte man sich zunächst Gedanken machen und ein Konzept entwerfen. Das tut der Autor in Kapitel 1, indem er zunächst die Anforderungen zusammenstellt. Er möchte eine webbasierte Administration mit Benutzerverwaltung, in der man dann die folgenden Module verwalten kann: Bilder, Navigation, Templates, Module und Artikel. Für die Verarbeitung der Templates benötigt er eine Template-Engine und für die Bilder eine rudimentäre Ordnerverwaltung.

Im zweiten Kapitel wird die Benutzeroberfläche entworfen. Hier beginnt bereits die Implementierung. Der Großteil des zu schreibenden Codes wird im Buch vorgestellt und erläutert, wobei es aber nicht zu seitenlangen Listings kommt. Überrascht stellt man vielmehr fest, daß die Listings fast alle deutlich weniger als eine Seite umfassen. Die Code- und HTML-Fragmente sind übersichtlich, typischerweise ist es eine Funktion, die einen einfachen Algorithmus implementiert, der oft nicht viel mehr als eine Schleife umfaßt. Im weiteren Verlauf bezieht sich der Autor natürlich auf schon Vorgestelltes und Implementiertes, wodurch er sich kürzer fassen kann und auch die Listings kompakt bleiben. Bereits implementierte Basisfunktionen werden mit Include-Anweisungen anderen Modulen zugänglich gemacht, wie sich das so gehört.

Nachdem die Bedienoberfläche in aller Ausführlichkeit abgehandelt ist, kommt der Aufbau einer Administration an die Reihe. Hauptsächlich geht es um eine (hier sehr einfach gehaltene) Benutzerverwaltung mit Sessions, benutzerspezifischen Einstellungen und globale Konfiguration des Systems. Hier wäre es mit wahrscheinlich wenig mehr Aufwand möglich gewesen, Benutzergruppen oder Rollen einzuführen und damit das System an dieser Stelle für den realen Einsatz besser tauglich zu machen. In der implementierten simplen Form halte ich das System nicht für praxisgerecht.

Wie dem auch sei, in Kapitel 4 wird eine Bilder- und Dokumentenverwaltung erstellt, die in ähnlicher Form auch real zum Einsatz kommen kann. Bilder werden Dokumenten zugeordnet und die Abhängigkeiten entsprechend überwacht. All das ist mit recht simplem Code machbar. Als Nebenprodukt fällt eine Bildergalerie in ihrer einfachsten Ausprägung ab.

Schon in Kapitel 2 wurde festgelegt, wo Navigationselemente plaziert werden sollen. In Kapitel 5 wird dies implementiert, wobei hierarchische Menüs entwickelt werden, bei der jeder Menüpunkt entweder zu einem Untermenü oder einem Dokument führt. All das ist datenbankgestützt und es werden Funktionen entwickelt, mit der man die Reihenfolge der Elemente ändern sowie Elemente freigeben oder sperren kann.

Im sechsten Kapitel definiert der Autor Module. Diese sind notwendig, um sie in der Templateverwaltung mit den Templates verknüpfen zu können. So können einzelne Komponenten, im Prinzip die Ausgabe der einzelnen Module, in gewissen Grenzen an beliebiger Stelle eines Templates plaziert werden. Selbst einige auf dem Markt befindliche CM-Systeme muten den Benutzern noch zu, Templates von Hand zu editieren, um das Layout anzupassen. Nicht so dieses Programm, wo man lediglich aus Dropdown-Boxen das gewünschte Modul selektieren muß. Es steht nicht nur ein Template zur Verfügung, sondern es können beliebig viele verwaltet werden. Eines davon ist das Standard-Template, aber jedem Dokument kann jedes verfügbare Template zugewiesen werden.

Die implementierten Module haben auch immer wieder die gleiche Grundstruktur, so daß der aufmerksame Leser bereits im Vorfeld ahnt, wie das Modul ungefähr aussehen wird. Und er wird nicht enttäuscht, denn Abweichungen vom Schema hat der Autor nicht eingebaut. Das liegt zum Teil wohl auch daran, daß die Funktionalität so simpel ist. Erst wenn man die Module weiter entwickeln würde, würde man spezialisierte Features einbauen.

Im siebten Kapitel, einem der längsten des Buches, wird eine Artikelverwaltung aufgebaut. Mit Text-Eingabefeldern werden Titel und Inhalt des Artikels online erstellt. Ein Artikel kann Bilder und Verweise auf Dokumente enthalten, die logischerweise auf das Modul Bild- und Dokumentenverwaltung verweisen. Auch Artikel können in bestimmter Reihenfolge angeordnet, freigegeben und gesperrt werden, analog zur Navigation, die in Kapitel 5 entstand.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung