Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Auf einen Blick
Vorwort .............................................................
9
1 Bausteine eines
Content Management-Systems ........................
17
2 Der allgemeine Aufbau der
Benutzeroberfläche ...........................................
31
3 Aufbau einer Administration .............................
95
4 Verwaltung von Bildern, Dokumenten
und Ordnern ..................................................... 149
5 Die Navigationsverwaltung .............................. 211
6 Seitenlayouts, Templates und Module ............. 285
7 Die Artikelverwaltung ....................................... 355
8 Eine Website in der Praxis ................................ 423
9 Zusammenfassung und Ausblick ....................... 471
A Inhalt der CD-ROM ........................................... 479
Index.................................................................. 481
Inhalt
Vorwort
1
9
Einleitung ..........................................................................................................
9
Die Zielgruppe dieses Buchs ..........................................................................
10
Ziele und Aufbau dieses Buchs ......................................................................
11
Technische Voraussetzungen .........................................................................
13
Installation des Content Management-Systems ........................................
14
Anmerkung zum Aufbau des CM-Systems ..................................................
16
Bausteine eines
Content Management-Systems
17
1.1
Anforderungen an ein CM-System ................................................................
19
1.2
Benutzerverwaltung .........................................................................................
21
1.3
Bilder- und Dokumentenverwaltung ............................................................
23
1.4
Navigationsverwaltung ...................................................................................
24
1.5
Templates und Module ...................................................................................
26
1.6
Artikelpflege ......................................................................................................
28
1.7
Die Template-Engine .......................................................................................
29
1.8
Zusammenfassung ............................................................................................
30
2
Der allgemeine Aufbau
der Benutzeroberfläche
31
2.1
Allgemeine Hinweise zum Aufbau einer Benutzeroberfläche ...................
33
2.2
Die Datenbankanbindung mit PHP ...............................................................
38
2.3
Aufbau einer Navigation .................................................................................
42
2.4
Die Primärnavigation .......................................................................................
2.4.1
Die Primärnavigation aus der Datenbank .......................................
43
43
2.5
Aufbau der Primärnavigation mit XML .........................................................
52
2.6
Die Sekundärnavigation ..................................................................................
2.6.1
Der allgemeine Aufbau der Sekundärnavigation ...........................
2.6.2
Die reine Sekundärnavigation (Typ 1) ............................................
2.6.3
Die reine Sekundärnavigation mit XML (Typ 1) ............................
54
56
59
61
Inhalt
5
Ordnerliste als Sekundärnavigation (Typ 2) ...................................
Navigationsliste als Sekundärnavigation (Typ 3) ............................
63
65
Die Listenschaltflächen ...................................................................................
2.7.1
Die Listenschaltfläche »Eintrag bearbeiten« ...................................
2.7.2
Die Listenschaltfläche »Eintrag löschen« ........................................
2.7.3
Die Listenschaltfläche »Eintrag freischalten« und
»Eintrag sperren« ...............................................................................
2.7.4
Listenschaltfläche »Neues Navigationselement« ...........................
2.7.5
Listenschaltfläche »Navigationselement umbenennen« ...............
2.7.6
Listenschaltfläche »Navigationselementoptionen« .......................
2.7.7
Listenschaltfläche »Navigationselement umsortieren« .................
68
69
70
2.8
Hinweisfenster, Content-Bereich und Funktionskopfleisten ...................
81
2.9
Funktionsleisten und Aktionsschaltflächen .................................................
2.9.1
Die Funktionsleiste head_add.php ..................................................
2.9.2
Die Funktionsleiste head_save.php .................................................
2.9.3
Die Funktionsleisten der Artikelverwaltung ...................................
82
85
87
89
2.10
Feintuning der Benutzeroberfläche ...............................................................
2.10.1 Styles der Listendarstellung ..............................................................
2.10.2 JavaScript-Funktionen der Listendarstellung ..................................
91
91
91
2.11
Fazit ....................................................................................................................
93
3
Aufbau einer Administration
3.1
Aufbau einer Benutzerverwaltung ................................................................. 97
3.1.1
Entwicklung der Benutzerübersicht und ihrer Funktionen .......... 101
3.1.2
Anlegen von neuen Benutzern und Bearbeiten
von Benutzereinträgen ...................................................................... 107
3.1.3
Benutzerdaten löschen, freischalten und sperren ......................... 118
3.2
Die Benutzerverwaltung im Einsatz .............................................................. 125
3.2.1
Der Login und seine Funktionen ..................................................... 126
3.2.2
Funktionen des Session-Managements .......................................... 134
3.3
Die persönliche Benutzereinstellungen ........................................................ 136
2.6.4
2.6.5
2.7
6
72
76
77
78
79
95
3.4
Die Systemeinstellungen ................................................................................ 144
3.5
Fazit .................................................................................................................... 148
4
Verwaltung von Bildern, Dokumenten
und Ordnern
149
4.1
Grundlegendes zur Verwaltung von Bildern und Dokumenten ............... 151
4.2
Die Ordnerverwaltung .....................................................................................
4.2.1
Entwicklung der Ordnerübersicht und ihrer Funktionen .............
4.2.2
Anlegen und Bearbeiten von Ordnern in
der Ordnerverwaltung ......................................................................
4.2.3
Löschen von angelegten Ordnern ...................................................
Inhalt
157
158
163
173
4.3
Die Bilder- und Dokumentenverwaltung ....................................................
4.3.1
Übersicht über die Funktionen der Bilder- und
Dokumentenverwaltung ...................................................................
4.3.2
Entwicklung der Dokumentenübersicht und ihre Funktionen ....
4.3.3
Anlegen und Bearbeiten von Dokumenten und Bildern ..............
4.3.4
Löschen von Dokumenten und Bildern ..........................................
4.3.5
Anlegen von Dokumenten- und Bilder-Ordnern ..........................
179
180
181
187
200
205
4.4
Fazit .................................................................................................................... 209
5
Die Navigationsverwaltung
5.1
Die Elemente einer Navigation ......................................................................
5.1.1
Die Navigationsbäume ......................................................................
5.1.2
Die Navigationszweige ......................................................................
5.1.3
Die Navigationselemente .................................................................
5.2
Logischer Aufbau der Navigation .................................................................. 217
5.3
Übersicht der Funktionen der Navigationsverwaltung ............................. 222
5.4
Anzeige einer strukturierten Navigation ...................................................... 225
5.5
Anlegen von Navigationsbäumen und Navigationselementen ................ 233
5.6
Verwalten von Navigationselementen .........................................................
5.6.1
Das Umbenennen von Navigationselementen ..............................
5.6.2
Freigabe und Sperren von Navigationselementen ........................
5.6.3
Löschen von Navigationselementen ...............................................
5.6.4
Sortieren von Navigationselementen ..............................................
5.6.5
Eigenschaften von Navigationselementen .....................................
5.7
Die Navigation auf der Webseite .................................................................. 269
5.7.1
Die einstufige Navigation auf der Webseite .................................. 270
5.7.2
Die geteilte Navigation auf der Webseite ...................................... 280
5.8
Fazit .................................................................................................................... 284
6
Seitenlayouts, Templates und Module
6.1
Die Modul-Verwaltung ...................................................................................
6.1.1
Die Standard-Module .......................................................................
6.1.2
Der Aufbau der Modulübersicht .....................................................
6.1.3
Anlegen von neuen Modulen und Bearbeiten von
gespeicherten Modulen ....................................................................
6.1.4
Löschen von Modulen ......................................................................
288
289
292
Die Template-Verwaltung ..............................................................................
6.2.1
Die Templates in der Datenbank .....................................................
6.2.2
Funktionen der Template-Verwaltung ............................................
6.2.3
Anlegen neuer Templates .................................................................
6.2.4
Konfiguration der CMS-Boxen .........................................................
6.2.5
Einrichten eines Standard-Templates ..............................................
310
311
315
326
336
348
6.2
211
213
214
215
216
243
243
248
252
257
260
285
298
306
Inhalt
7
6.3
Das Seitenlayout .............................................................................................. 351
6.3.1
Der Aufbau eines Seitenlayouts ....................................................... 351
6.4
Fazit .................................................................................................................... 354
7
Die Artikelverwaltung
7.1
Aufbau einer Artikelverwaltung ..................................................................... 357
7.1.1
Logischer Aufbau der Daten eines Artikels .................................... 360
7.2
Die Artikelübersicht ......................................................................................... 367
7.3
Das Anlegen und Bearbeiten von Artikeln ................................................... 373
7.4
Sortieren, Löschen, Freischalten und Sperren von Artikeln ...................... 380
7.5
Artikelinhalte bearbeiten ................................................................................ 385
7.5.1
Der Artikel-Bildschirm ....................................................................... 386
7.5.2
Die Bearbeitungsmasken .................................................................. 403
7.6
Fazit .................................................................................................................... 422
8
Eine Website in der Praxis
8.1
Die Gestaltung des Seitenlayouts ................................................................. 425
355
423
8.2
Vorbereitungen im Backend ........................................................................... 430
8.3
Die Template-Engine ....................................................................................... 433
8.4
Die Modul-Ausgabedateien ...........................................................................
8.4.1
Die Modul-Datei Artikeltext .............................................................
8.4.2
Die Modul-Datei Grafik ....................................................................
8.4.3
Die Modul-Datei Einstufige Navigation ..........................................
8.4.4
Die Modul-Datei Zusatznavigation ..................................................
437
438
440
443
446
8.5
Erweiterungen der Webseite .........................................................................
8.5.1
Die Modul-Datei Include-Datei .......................................................
8.5.2
Die Modul-Datei Bildergalerie .........................................................
8.5.3
Die Modul-Datei Artikelliste ............................................................
447
451
454
458
8.6
Die Webseite mit einer geteilten Navigation ............................................. 463
8.7
Fazit .................................................................................................................... 469
9
Zusammenfassung und Ausblick
471
A
Inhalt der CD-ROM
479
Index
481
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Vorwort
Einleitung
Immer öfter wird bei der Umsetzung einer Website ein Content ManagementSystem eingesetzt. Waren dies am Anfang nur große Unternehmen oder die
Betreiber von Portalen im Internet, so hat dieser Trend mittlerweile auch Einzug bei kleineren und mittelständischen Unternehmen gehalten. Auf ein Content Management-System als Instrument zur Webseitenpflege will kaum
jemand mehr verzichten.
Im Zuge dessen ist ein nahezu unüberschaubares Angebot von Systemen entstanden. Der Markt ist sogar für Profis, die sich tagtäglich mit der Thematik
beschäftigen, nicht mehr zu überblicken. Neben den kostenpflichtigen Angeboten gibt es bereits sehr viele Projekte im Open Source-Bereich, von denen
einige durch ihren Funktionsumfang und ihre leichte Bedienbarkeit überzeugen und die keinen Vergleich mit kostenpflichtigen Systemen scheuen müssen.
Möglicherweise fragen Sie sich: Warum ein Buch über dieses Thema, wenn es
kostenlose Systeme auf dem Markt gibt, die meistens in PHP entwickelt sind,
und bei denen ein Download und eine kleine Installation genügt, um am Ziel
seiner Wünsche zu sein?
Die Antwort lautet: Alle Systeme, die Sie auf dem Markt finden, haben einen
kleinen Haken, der nicht zu vermeiden ist. Jedes System spiegelt die Ziele seiner Entwickler wider. Die Systeme sind meistens aus den Anforderungen entstanden, die an einen Entwickler oder ein Team gestellt wurden. Im Laufe der
Zeit wurden diese Systeme dann weiterentwickelt, bis letztendlich ein eigenständiges Content Management-System (CM-System) entstanden ist.
Leider ist es so, dass viele Systeme Ihnen vortäuschen, Sie benötigten keinerlei
Programmier- oder HTML-Kenntnisse. Probieren Sie es doch einfach einmal
aus. Ohne die entsprechenden Grundkenntnisse werden Sie auch mit einem
CM-System keine Ergebnisse erzielen.
Oft steht der Entwickler einer Webseite dann an einem Scheidepunkt. Die erste
Möglichkeit ist es, sich in ein System einzuarbeiten, um dann die gewünschten
Ergebnisse zu erzielen. Die Alternative ist die Beauftragung einer Agentur, die
mit Ihrem kostenlosen System vertraut ist. Die dritte Möglichkeit ist die Entwicklung eines eigenen Systems. Dies ist aber die zeitaufwändigste, werden Sie
jetzt einwenden. Damit haben Sie durchaus Recht, Sie sollten jedoch nicht
außer Acht lassen, dass Sie ein System, das Sie selbst entwickelt haben, jeder-
Vorwort
9
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
zeit und leichter an individuelle Bedürfnisse anpassen können als jedes andere
System.
Doch ganz ist die Frage immer noch nicht geklärt, warum Sie nun ein Buch
über die Entwicklung eines CM-Systems mit PHP in der Hand halten. Eigentlich
ist die Antwort ziemlich einfach. Wenn Sie wirklich den Schritt wagen, ein
eigenes System zu entwickeln, werden Sie an einigen Stellen auf Probleme stoßen, die Sie in Ihrem Arbeitsfortschritt aufhalten. Diese Probleme behandelt
das Buch und es will Ihnen dabei helfen, sie zu beheben bzw. zu umgehen.
Am Ende des Buchs haben Sie ein vollständiges CM-System entwickelt, das Sie
in die Lage versetzt, auf seiner Basis Webseiten umzusetzen. Da Sie aber
zugleich das System entwickelt haben, dürfte es Ihnen später nicht schwer fallen, das System bei individuellen Anforderungen entsprechend anzupassen
und zu erweitern.
Die Zielgruppe dieses Buchs
An wen richtet sich nun dieses Buch? Auch diese Frage kann nicht in einem
Satz beantwortet werden. In erster Linie ist dieses Buch für alle Programmierer,
Webmaster und HTML-Entwickler gedacht, die sich damit beschäftigen, Webseiten zu pflegen und zu gestalten.
Sie kommen nicht umhin, grundlegende Kenntnisse von HTML und PHP mitzubringen. Diese setzt das Buch voraus. Auf dieser Grundlage ist das Buch für
jeden gedacht, der sich einmal mit der Entwicklung eines CM-Systems beschäftigen möchte oder muss.
Hier ist zum einen der Verantwortliche zu nennen, der zum Beispiel in einer
Firma die Aufgabe hat, die Webseite zu betreuen, und in der Lage ist, einfache
Programmierung mit PHP umzusetzen.
PHP-Neulinge erhalten in diesem Buch einen guten Einstieg in den Aufbau von
Verwaltungstools. Dies kann zum einen wieder ein CM-System sein, aber auch
andere Systeme, etwa eine Produktverwaltung, lassen sich anhand der in diesem Buch gewonnenen Kenntnisse relativ leicht erstellen.
Allgemein betrachtet ist jeder, der sich mit der Entwicklung von Webseiten
beschäftigt, in diesem Buch gut aufgehoben. Auch wenn Sie noch keine Erfahrung haben im Umgang mit PHP und MySQL, sind Sie hier nicht auf verlorenem Posten. Es gibt einige sehr gute Bücher, die Ihnen innerhalb kürzester
Zeit das entsprechende Grundwissen vermitteln können, das Sie benötigen,
um mit diesem Buch zu arbeiten und akzeptable Ergebnisse zu erhalten. Als
Beispiel sei hier das Buch »Einstieg in PHP 5« von Thomas Theis genannt.
10
Vorwort
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Neben Büchern haben Sie natürlich auch die Möglichkeit, sich Ihr Wissen im
Internet anzueignen. Es gibt hierzu eine große Anzahl von Webseiten, die sich
mit dem Thema PHP beschäftigen. Viele bieten praktische Tutorials und
Workshops für die Arbeit und den Einstieg in PHP. Stellvertretend seien hier
das PHP-Center (http://www.php-center.de), PHP-Welt (http://www.phpwelt.de) und die Homepage zu PHP (http://www.php.net) genannt.
Ziele und Aufbau dieses Buchs
Obwohl Sie auf der beiliegenden CD ein vollständiges Content ManagementSystem erhalten, welches Sie im Laufe dieses Buchs entwickeln werden, ist das
Ziel nicht nur die Fertigstellung eines Systems.
Vielmehr soll ein Blick hinter die Kulissen dieses Systems geworfen werden.
Dies fängt bei der Frage an, wie auf einer Webseite ein geschützter Bereich eingerichtet werden kann, auf den nur ausgewählte Benutzer Zugriff haben.
Durch den modularen Aufbau des Buchs werden Sie in die Lage versetzt, einzelne Module herauszugreifen, um diese dann in anderen Anwendungen einzubauen, wie zum Beispiel die Benutzerverwaltung. Diese gehört sicherlich zu
einem CM-System dazu, aber auch bei einer Produktdatenbank, die über ein
Onlinetool zur Verwaltung verfügen soll, ist sie erforderlich.
Sie möchten mit einem Onlinetool nur eine Navigation erstellen, die auf einer
Datenbank oder XML beruht? Auch zu diesem Thema erhalten Sie eine Antwort.
Sie benötigen eine Administrationsoberfläche, mit der Sie Inhalte Ihrer Webseite, Ihres Online-Shops oder einer anderen Datenbank verwalten möchten?
Auch hier kann Ihnen dieses Buch weiterhelfen.
Das CM-System wird Schritt für Schritt entwickelt. Begonnen wird mit der
Erstellung eines Backends, also der Administrationsoberfläche. Hierbei werden
Sie sich auch gleich mit dem Aufbau einer Navigation für ein Backend beschäftigen: zum einen mit einer Navigation, die auf einer Datenbank basiert, und
zum anderen mit einer Navigation per XML.
Sie werden feststellen, dass Sie neben der allgemeinen Navigation auch noch
weitere Schaltflächen für die Arbeit mit den einzelnen Modulen benötigen.
Hierzu werden Sie mehrere Klassen und Methoden erstellen, auf die Sie im
weiteren Verlauf der Entwicklung immer wieder zurückgreifen.
Im nächsten Schritt bauen Sie dann eine Benutzerverwaltung auf. In jedem
Modul erfahren Sie dabei auch, welche Tabellen Sie in einer Datenbank benö-
Ziele und Aufbau dieses Buchs
11
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
tigen, über welche Struktur sie verfügt und welche Aufgaben die einzelnen
Datenfelder haben.
Nach dem Aufbau der Benutzerverwaltung wird die Verwaltung von Bildern
und Dokumenten erläutert. Diese Module können Sie auch dazu verwenden,
auf einer Webseite einen Downloadbereich zu erstellen, den Sie über eine
Datenbank verwalten. Mit der Bilder- und Dokumentenverwaltung halten Sie
dann das richtige Arbeitszeug in den Händen, um diesen Bereich über ein
Backend zu pflegen.
Beim Aufbau des Backends haben Sie sich schon mit der Entwicklung einer
Navigation beschäftigt, jedoch haben Sie dort nur erfahren, wie Sie aus vorgegebenen Daten eine Navigation auf einer Webseite aufbauen. In der Navigationsverwaltung des CM-Systems gehen Sie einige Schritte weiter. Sie werden
erfahren, wie Sie durch den geschickten Aufbau einer Datenbanktabelle eine
Navigation mit einer einfachen Eingabemaske erstellen können. Sie werden
auch die Möglichkeiten kennen lernen, wie Sie über das Backend Einträge sortieren und Eigenschaften einem Navigationselement zuweisen können. Zum
Abschluss des Moduls wird gezeigt, wie Sie eine erstellte Navigation dann auf
einer Webseite anzeigen.
Sie sehen, dass die bisher angesprochenen Module alle flexibel einsetzbar sind,
das heißt, Sie können diese Module komplett oder mit einigen Abänderungen
Ihrerseits auch in anderen Anwendungen einsetzen. Vergessen Sie jedoch
nicht: Das zentrale Thema des Buchs ist die Entwicklung eines CM-Systems,
und so gibt es natürlich auch Module, die Sie in anderen Systemen kaum oder
gar nicht einsetzen können, wie zum Beispiel die Modul- und Template-Verwaltung.
In diesem Schritt werden Sie erfahren, wie Sie innerhalb des Systems Module
erstellen, die sowohl zur Darstellung der Inhalte auf der Webseite als auch teilweise zur Eingabe von Informationen innerhalb des Backends erforderlich
sind. Sie werden Templates aufbauen, die Sie auf der Webseite in Verbindung
mit einem Seitenlayout einsetzen können.
In den bisherigen Schritten haben Sie sich noch nicht mit den Inhalten einer
Webseite auseinander gesetzt, doch geht es in einem CM-System ja genau
darum. Daher werden Sie auch eine Verwaltung für Ihre Artikel entwickeln. Sie
werden erfahren, wie Sie einem Navigationspunkt Artikel hinzufügen, diese
überarbeiten und online stellen.
Wenn Sie schließlich an diesem Punkt angekommen sind, werden Sie in der
Lage sein, mit Hilfe des Backends eine komplette Website aufzubauen, angefangen bei der Navigation bis hin zum Einstellen von Artikeln. Im letzten
12
Vorwort
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Schritt auf Ihrem Weg der Entwicklung eines CM-Systems werden Sie dann das
Frontend erstellen. Hierbei liegt der Schwerpunkt vor allem auf dem Aufbau
einer Template-Engine, die Ihre Informationen, die Sie über das Backend eingepflegt haben, dem Besucher Ihrer Webseite gemäß den hinterlegten Templates präsentiert.
Sie sehen, wenn Sie sich mit diesem Buch intensiver beschäftigt haben, werden
Sie über eine Menge Wissen verfügen, das Ihnen nicht nur bei der Entwicklung
des CM-Systems helfen wird, sondern Sie auch in vielen anderen Anwendungen unterstützen kann.
Technische Voraussetzungen
Es ist bereits deutlich geworden, dass Sie auf jeden Fall einen Webserver benötigen, der mit PHP und einer MySQL-Datenbank ausgestattet ist. Welchen Webserver Sie hierbei einsetzen, ist ganz Ihnen überlassen. Es macht keinen Unterschied, ob Sie als Webserver Apache oder einen Internet Information Server
(IIS) von Microsoft verwenden. Gleiches gilt auch für das Betriebssystem, mit
dem der Server ausgestattet ist. Sie haben die freie Wahl.
Als mögliche PHP-Version können Sie PHP 4 ab Version 4.2 oder PHP 5 einsetzen. An den Stellen, an denen Sie PHP 5 benötigen, wird darauf eindeutig
hingewiesen. Dies müssen Sie auch beachten, wenn Sie das System außerhalb
Ihrer Entwicklungsumgebung nutzen. Zum Zeitpunkt der Erstellung diese
Buchs ist die finale Version von PHP 5 erst wenige Wochen freigegeben, daher
gilt es abzuwarten, wie schnell die Provider nachziehen und auf ihren Webservern den Kunden die neueste Version von PHP anbieten werden.
Egal, ob Sie nun PHP 5 oder PHP 4 verwenden, das System und die dargestellten Programme sind auf beiden Systemen voll lauffähig, abgesehen von den
Programmen, die sich ausschließlich auf PHP 5 beziehen.
Noch ein Wort zur Datenbank. Grundsätzlich können Sie als Backend hinter
der Programmierung jede Datenbank verwenden. Sie können also zum Beispiel
auch MS Access oder SQLlite nutzen. Aufgrund der Popularität von MySQL
und dem vermutlich den meisten Lesern vertrauten Umgang von PHP mit
MySQL wurde diese Kombination ausgewählt.
Im Zuge der Entwicklung von PHP 5 wurde von vielen Seiten behauptet, dass
mit der neuen Version von PHP die Datenbank MySQL aus lizenzrechtlichen
Gründen nicht mehr unterstützt würde. Dies ist jedoch nicht der Fall, da es
eine Ausnahmelizenz für PHP von MySQL gibt.
Technische Voraussetzungen
13
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Installation des Content Management-Systems
Auf der beiliegenden CD finden Sie das komplette System, das in diesem Buch
entwickelt werden soll. Es empfiehlt sich zum besseren Verständnis mancher
Schritte oder auch, um nur einmal vorher in das System reinzuschnuppern, das
beiliegende System auf Ihrem Entwicklungsserver zu installieren.
Die Installation gestaltet sich relativ einfach in drei Schritten.
Installation der Dateien
Auf der CD finden Sie im Verzeichnis cmssetup die zwei Dateien setup_cms.zip
und setup_sql.sql. Kopieren Sie im ersten Schritt die Datei setup_cms.zip auf
Ihren Webserver. Danach müssen Sie die Dateien aus der gepackten Datei
extrahieren.
Abbildung 1 Entpacken der Dateien
Der Verzeichnisname spielt hierbei keine Rolle, jedoch sollten Sie ein Unterverzeichnis im Dokumentenverzeichnis (DocumentRoot) Ihres Webservers wählen.
Wenn Sie die Dateien in das Verzeichnis extrahiert haben, haben Sie auch
schon den ersten Schritt der Installation geschafft. Wenn Sie nun in einem
Dateimanager das ausgewählte Verzeichnis aufrufen, sehen Sie zwei Versionen
des CM-Systems. Eine Version im Verzeichnis cmsadmin und die andere in cmsadminxml. Die Unterschiede der beiden Versionen werden an späterer Stelle
genauer erklärt. Hier sei nur gesagt, dass die Navigation des Backends des CMSystems im Verzeichnis cmsadminxml mit XML aufgebaut ist.
14
Vorwort
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Installation der Datenbank
Um die erforderliche Datenbank und die dazugehörigen Tabellen auf dem
Datenbankserver zu installieren, öffnen Sie Ihre Datenbank mittels phpMyAdmin. Wählen Sie dann den Menüpunkt SQL. Hier werden Sie dann aufgefordert, entweder SQL-Befehle in ein Eingabefeld einzugeben oder eine Datei
mit SQL-Befehlen zu laden. Über die Schaltfläche Durchsuchen können Sie die
Datei setup_sql.sql von der CD auswählen.
Abbildung 2 Installation der MySQL-Datenbank
Diese Datei enthält alle erforderlichen SQL-Anweisungen, um eine Datenbank
und die dazugehörigen Tabellen anzulegen. Bestätigen Sie anschließend Ihre
Auswahl mit OK. Nachdem die Datenbank erfolgreich angelegt wurde und die
Tabellen erstellt wurden, liefert Ihnen phpMyAdmin eine Meldung über den
erfolgreichen Abschluss des Vorgangs.
Einrichten des Webservers
Um über den Browser auf das CM-System zugreifen zu können, müssen Sie in
Ihrem Webserver ein entsprechendes virtuelles Verzeichnis einrichten. Dabei
müssen Sie das Verzeichnis angeben, in dem Sie die Dateien extrahiert haben.
Den Namen der Webseite können Sie wieder beliebig festlegen, jedoch sollten
Sie darauf achten, dass Sie eine aussagekräftige Bezeichnung wählen.
Einrichten der Konfigurationsdateien
Sie können nun die Login-Seite des Systems bereits über Ihren Browser aufrufen. Doch selbst wenn Sie über die korrekten Angaben zu Benutzer und Passwort verfügen, könnten Sie sich aller Voraussicht nach nicht am System anmelden – und zwar, weil die Verbindungsdaten zum Datenbankserver noch nicht
eingegeben sind. Um diese anzupassen, wechseln Sie in das Verzeichnis includes, das in dem Verzeichnis liegt, das Sie für die Dateien angelegt haben.
Dort finden Sie dann die Datei __include_databasefunction.php. Diese Datei ist
verantwortlich für den Verbindungsaufbau mit der Datenbank. Öffnen Sie nun
die Datei mit einem Editor, dann sehen Sie im oberen Bereich die folgenden
Zeilen:
Installation des Content Management-Systems
15
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
//**____________________________________________________________
//** Submodul: Datenbankparameter
//**____________________________________________________________
$HOST = "localhost";
$User = "user";
$Passw = "pw";
$dBase = "democms";
Diese Angaben müssen Sie nun an Ihre Daten anpassen und die Datei anschließend speichern. Wenn Sie nun die Loginseite http://ihr_webserver/ihr_verzeichnis/cmsadmin/index.php im Browser aufrufen, dann als Benutzer admin und als
Passwort login eingeben, öffnet sich in Ihrem Browser das Backend des CM-Systems.
Sie sehen, die Installation des Systems haben Sie in wenigen Minuten vorgenommen. Bevor Sie sich nun ganz der Programmierung des CM-Systems
widmen, sollten Sie sich zunächst Gedanken darüber machen, welche Aufgaben und Funktionen Ihr System erfüllen soll.
Anmerkung zum Aufbau des CM-Systems
Es gibt viele Möglichkeiten, ein CM-System oder eine Website aufzubauen. Sie
können ebenso auf vielen Wegen einer PHP-Programmierung zu Ihrem Ziel
gelangen. In Systemen, die sich auf dem aktuellen Stand der Technik befinden,
sollten Sie PHP-Code und HTML strikt voneinander trennen. Hierbei sollten Sie
HTML-Templates einsetzen, um dieser Anforderung gerecht zu werden.
Da es Ziel dieses Buchs ist, nicht nur die Programmierung eines CM-Systems zu
erläutern, sondern Ihnen auch näher zu bringen, was Sie bei der Konzeption
und der Entwicklung allgemein beachten müssen, werden Sie bei der Umsetzung des CM-Systems an bestimmte Grenzen stoßen. Dabei kann es sich um
solche des Funktionsumfangs einzelner Module oder um Beschränkungen der
eingesetzten Techniken handeln. Die Neueinsteiger unter Ihnen werden dafür
dankbar sein, für die Profis ist es eine gute Anregung, das vorgestellte System
weiter auszubauen und anzupassen.
Ungeachtet dessen haben Sie am Ende des Buchs ein System entwickelt, mit
dem es Ihnen möglich ist, Websites aufzubauen und die Webseiten zu pflegen.
Sie verfügen dann über eine hervorragende Grundlage für die Umsetzung Ihrer
eigenen Anforderungen und Ideen.
16
Vorwort
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
1 Bausteine eines
Content ManagementSystems
2
3
4
5
6
1.1
Anforderungen an ein CM-System .......................... 19
1.2
Benutzerverwaltung ................................................ 21
1.3
Bilder- und Dokumentenverwaltung ....................... 23
8
1.4
Navigationsverwaltung ............................................ 24
9
1.5
Templates und Module ........................................... 26
1.6
Artikelpflege ............................................................ 28
1.7
Die Template-Engine ............................................... 29
1.8
Zusammenfassung ................................................... 30
7
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
1
2
Bausteine eines Content ManagementSystems
3
4
Ein CM-System besteht aus mehreren Elementen, die für ein effektives
Arbeiten erforderlich sind. In diesem Kapitel erfahren Sie, welche
Bausteine Sie für den täglichen Umgang mit einem CM-System benötigen, welche Funktionen diese erfüllen sollen und wie Sie ein Konzept
für die Umsetzung erarbeiten.
5
6
7
Bei jedem Projekt müssen Sie zu Beginn bestimmen, welche Aufgaben und
Funktionen umgesetzt werden sollen. Wenn Sie für einen Kunden arbeiten,
wird in Zusammenarbeit mit ihm im ersten Schritt ein grobes Konzept entwickelt. Hierfür werden zumeist mindestens eine, bei umfangreicheren Projekten auch mehrere Projektbesprechungen angesetzt. Nachdem Sie das Grobkonzept erarbeitet haben, erfolgt bei größeren Projekten noch die Umsetzung in
ein Feinkonzept, welches Sie sich normalerweise von Ihren Kunden bestätigen
lassen sollten. Dieses Feinkonzept bietet Ihnen die Grundlage für das Pflichtenund Lastenheft: das A und O bei der Umsetzung eines Projekts. Hier sollten alle
Voraussetzungen, Aufgaben und Arbeitsverteilungen festgelegt sein.
8
9
Nun, Sie werden sich bestimmt fragen, was das mit diesem Buch zu tun hat.
Schließlich widmen Sie sich dem Buch, um ein Content Management-System
zu entwickeln und nicht um Projekte für Kunden umzusetzen. Da haben Sie
natürlich vollkommen Recht, aber auch die Umsetzung eines CM-System
gleicht einem Projekt. Auch hier müssen Sie zunächst grob festlegen, welche
Aufgaben Ihr System erfüllen soll und in welche Bereiche oder Teilprojekte es
eingeteilt werden kann. Wenn Sie sich darüber im Klaren sind und Ihr Grobkonzept erstellt haben, müssen Sie für jedes Teilprojekt wieder die Funktionalität und die Aufgaben bestimmen. In diesem Kapitel werden Sie zuerst das
Grobkonzept und dann für die einzelnen Bereiche das Feinkonzept erarbeiten.
1.1
Anforderungen an ein CM-System
Wenn Sie mehrere Internetprogrammierer befragen würden, welche Anforderungen diese an ein CM-System stellen, wären Sie wahrscheinlich nicht überrascht, dass die Liste der Antworten sehr umfangreich ausfallen würde. Nichtsdestotrotz könnten Sie dieser Liste doch eine eindeutige Grundtendenz
entnehmen.
Die Grundlage der meisten CM-Systeme ist eine benutzerfreundliche Verwaltungsoberfläche, das so genannte Backend. Daneben gibt es auch noch CM-Sys-
Bausteine eines Content Management-Systems
19
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
teme, die ohne Backend funktionieren. Bei diesen Systemen wird dem berechtigten Administrator die Webseite mit zusätzlichen Links angezeigt, die ein
Bearbeiten der Inhalte ermöglichen. Dieses Verfahren ist auch bekannt unter
dem Begriff »in place editing«. In dem vorgestellten CM-System werden Sie
dieses Verfahren jedoch nicht anwenden, sondern eine eigenständige Verwaltungsoberfläche entwickeln.
Die Aufgabe der Oberfläche ist es, die einzelnen Module des CM-Systems
zusammenzufassen und dem Benutzer über eine saubere Navigation die Arbeit
mit dem System zu erleichtern. Es lässt sich natürlich darüber streiten, was
benutzerfreundlich konkret bedeutet. In erster Linie ist dies eine rein subjektive Auffassung jedes Benutzers. Ob das System, das Sie erstellen oder erstellt
haben, benutzerfreundlich ist, können Sie am einfachsten testen, indem Sie
Benutzer, die mit dem System noch nicht vertraut sind, damit arbeiten lassen.
Selbstredend sollten Ihre Testbenutzer keine absoluten Laien in der Arbeit mit
einem PC sein.
Neben der benutzerfreundlichen Oberfläche muss auch das Backend des Systems selbst wieder modular aufgebaut sein, damit Sie als Entwickler Erweiterungen und Ergänzungen einfach vornehmen können, auch wenn Sie längere
Zeit nicht mehr an dem System programmiert haben.
Die Grundvoraussetzung, um mit einem CM-System zu arbeiten, bildet eine
Benutzerverwaltung. In diesem Bereich sollen alle Daten und Einstellungen,
die mit den Benutzern des Systems in Verbindung stehen, verwaltet werden.
Eine Webseite besteht normalerweise nicht nur aus reinem Text. Zur Visualisierung und Veranschaulichung von Sachverhalten werden oft Bilder und Grafiken verwendet. Wenn Sie eine Website aufbauen, auf der Sie zum Beispiel
Produkte präsentieren, sollten Sie sich auch darüber Gedanken machen, ob Sie
nicht zu jedem Produkt ein Informationsblatt zum Download bereitstellen. Alle
Dokumente, Grafiken und Bilder, die Sie auf Ihrer Website dem Besucher
anbieten möchten oder zum Download bereitstellen wollen, müssen zuerst auf
dem Webserver gespeichert werden, damit Sie den Besuchern zur Verfügung
stehen. Hierzu bietet es sich an, dass Sie eine Bilder- und Dokumentenverwaltung erstellen, mit der Sie diese Dateien zentral verwalten können, um sie
an den entsprechenden Stellen des Systems verfügbar zu machen.
Die schönsten Grafiken und Bilder bringen Ihre Besucher jedoch nicht weiter,
wenn Sie keine Navigation zur Orientierung innerhalb der Website anbieten.
Um hier Abhilfe zu schaffen, müssen Sie im Backend eine Navigation für Ihre
Website aufbauen und diese auch verwalten können.
20
Bausteine eines Content Management-Systems
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
Auf Ihrer Website werden viele Seiten sein, an die Sie dieselben Anforderungen bezüglich des Aufbaus stellen. Allerdings gibt es auch immer wieder
Seiten, die vom Standardaufbau abweichen. Da es bei einem CM-System das
Ziel ist, mit einer Vorlagendatei, dem Template, alle Seiten der Website darzustellen, benötigen Sie einen Bereich, in dem Sie ein individuelle Anordnung
von Navigation, Texten und Übersichtlisten festlegen können. Diese Aufgabe
soll die Template- und Modulverwaltung übernehmen.
3
4
5
Nachdem Sie im CM-System die Navigation aufgebaut und die Zuordnung von
Templates zu den Navigationspunkten vorgenommen haben, müssen Sie sich
um einen weiteren Punkt kümmern: die Pflege der Texte. Hierzu sollte jedes
CM-System über eine Artikelverwaltung verfügen, mit deren Hilfe Sie für jeden
einzelnen Navigationspunkt Texte erstellen können, die auf der Webseite dann
an den festgelegten Stellen ausgegeben werden.
6
An dieser Stelle haben Sie nun die wichtigsten Bereiche zusammengetragen,
die in einem Backend für die erfolgreiche Arbeit mit einem CM-System
erforderlich sind. Eine wichtige Komponente dürfen Sie jedoch nicht außer
Acht lassen. Es handelt sich um einen Bereich, mit dem der Benutzer des
Backends zwar nie direkt in Berührung kommen wird – und auch der Besucher
der Website wird diesen Bereich niemals sehen –, der für den Aufbau der Webseite jedoch unerlässlich ist. Die Rede ist von der Template-Engine. Sie hat die
Aufgabe, die Inhalte, die für eine Webseite in der Datenbank hinterlegt sind, an
der richtigen Stelle innerhalb des Templates einzufügen. Damit die TemplateEngine ermitteln kann, welche Seite der Besucher anschauen möchte, müssen
diese Informationen beim Aufruf der Webseite an die Template-Engine übermittelt werden.
9
7
8
Nun haben Sie Ihr erstes Grobkonzept für ein CM-System zusammengetragen.
Jetzt ist es Ihre nächste Aufgabe, für jeden einzelnen Bereich ein Feinkonzept
zu erstellen. In diesem sollten Sie festlegen, welche Anforderungen Sie an die
einzelnen Bereich stellen und welche Funktionen dafür bereitgestellt werden
müssen.
1.2
Benutzerverwaltung
Die Benutzerverwaltung stellt in dem Beispielsystem wahrscheinlich neben der
Bilder- und Dokumentenverwaltung das einfachste Modul dar. In vielen CMSystemen finden Sie jedoch auch Benutzerverwaltungen, die bedeutend komplexer aufgebaut sind und nicht selten eigene Handbücher füllen. Um jedoch
den Umfang dieses Buches nicht zu sprengen und die Benutzerverwaltung so
kompakt und effektiv wie möglich zu gestalten, wurde in dem Beispielsystem
Benutzerverwaltung
21
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
bewusst auf ein umfangreiches Rechtesystem der einzelnen Benutzer verzichtet. Die Hauptaufgabe dieses Moduls ist die Verwaltung der Benutzerdaten.
Hierfür sollten Sie sich überlegen, welche Daten eines Benutzers Sie speichern
möchten. Neben dem Namen des Benutzers müssen Sie für eine Loginmaske
auch ein Passwort speichern.
Zur Verwaltung von Benutzerdaten gehören auch die Möglichkeiten, die Daten
eines Benutzers zu überarbeiten oder einen Benutzer zu löschen.
Denken Sie ebenfalls daran, dass der Benutzer sein Passwort selbstständig
ändern kann. Denn normalerweise müssen Sie als Administrator dem Benutzer
beim Anlegen ein Passwort zuweisen. Benutzer haben jedoch die Angewohnheit, dass sie bestimmte Passwörter bevorzugen. Daher sollten Sie hierfür eine
Funktion entwickeln, über die der Benutzer sein Passwort nach Belieben abändern kann. Wenn Sie Benutzer oder Passwörter verwalten, kennen Sie
bestimmt die Situation, dass ein Benutzer sein Passwort vergessen hat. Mit
einer Funktion »Passwort vergessen« können Sie sich viel Arbeit ersparen,
wenn der Benutzer nach Angabe seines Benutzernamens und der Beantwortung einer festgelegten Frage automatisch sein Passwort mitgeteilt bekommt.
Eine Benutzerverwaltung muss jedoch noch weitere Anforderungen erfüllen.
Zum einen muss für das Backend eine Loginmaske bereitgestellt werden, in der
sich ein Benutzer an dem System anmelden kann. Hier müssen Sie dann überprüfen, ob der Benutzer im System eingetragen ist und ob die angegebenen
Daten beim Login alle korrekt waren. Erst dann dürfen Sie einem Benutzer den
Zutritt zum System gestatten.
Beim Aufbau des Beispielsystems beschäftigen Sie sich immer mit den Benutzern des Backends. Daneben gibt es natürlich auch noch bei jedem webbasierten System den Benutzer des Frontends, den Besucher oder Leser einer Webseite. Viele CM-Systeme verfügen jedoch auch noch über Funktionen zum
Aufbau einer Community. In diesem Fall ist dann auch noch eine Benutzerverwaltung für die Organisation der Frontend-Benutzer erforderlich, da für den
Zugang zu einer Community oftmals eine Verifizierung mittels eines Logins
benötigt wird.
Während der ganzen Zeit, in der ein Benutzer mit dem System arbeitet, müssen
Sie immer wieder überprüfen, ob der Benutzer sich ordnungsgemäß angemeldet hat. Es kann nämlich vorkommen, dass ein Benutzer die Seite über seinen Seitencache aufruft oder die Seite in seinen Favoriten verlinkt hat und
somit vielleicht unberechtigterweise Zutritt zum System erlangt. Dies soll
jedoch nicht möglich sein.
22
Bausteine eines Content Management-Systems
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
Bedenken Sie auch, dass Benutzer des Öfteren ihren Arbeitsplatz verlassen,
ohne sich aus dem System abzumelden, mit dem sie arbeiten. Um zu verhindern, dass andere Benutzer mit dem System nach einiger Zeit weiter arbeiten, sollten Sie auch noch einen automatischen Logout entwickeln, der zeitlich
gesteuert wird, den so genannten Session Timeout.
3
4
5
Die oben beschriebenen Funktionen stellen die Grundanforderungen an eine
Benutzerverwaltung dar. Wenn in Ihrem System mehrere Benutzer arbeiten, ist
es sinnvoll, neben der Benutzerverwaltung auch noch eine Rechte- und
Gruppenverwaltung aufzubauen. In dieser können Sie dann festlegen, welcher
Benutzer auf welchen Bereich im CM-System Zugriff hat und welche Rechte er
für jeden einzelnen Bereich besitzt.
6
7
8
In dem vorgestellten Beispielsystem hat die Benutzerverwaltung für die Darstellung der Webseite natürlich keine Aufgaben, da sie alleine für den korrekten Ablauf innerhalb des Backends erforderlich ist. Wenn Sie jedoch ein
CM-System entwickeln, das über die Funktionalität »in place editing« verfügt,
hat die Benutzerverwaltung sehr wohl einen Einfluss auf die Darstellung der
Webseite. In einem solchen System werden den berechtigten Benutzern zusätzliche Navigationspunkte und Schaltflächen für die Bearbeitung der Webseite
angezeigt.
9
Zusammenfassung der Aufgaben:
왘 Anlegen von neuen Benutzern
왘 Verwaltung und Löschen von Benutzerdaten
왘 Bearbeitung der Benutzerdaten durch den Benutzer
왘 Überwachung des Benutzers während der Arbeit mit dem Backend
1.3
Bilder- und Dokumentenverwaltung
Im Grobkonzept haben Sie bereits festgelegt, dass Sie einen Bereich benötigen,
in dem Sie Bilder und Dokumente speichern können. Sie sollten in diesem
Bereich die Verwaltung von Bildern und Dokumente trennen, das heißt, sie
benötigen eigentlich zwei Module. Da das strukturelle Vorgehen jedoch bei Bildern und Dokumenten ähnlich ist, können Sie in Ihrem Feinkonzept beide als
eine Einheit betrachten.
Zu den Aufgaben der Bilder- und Dokumentenverwaltung gehört es, dass der
Benutzer über eine Eingabemaske ein Dokument oder ein Bild auswählen
kann, um dieses dann auf dem Webserver zu speichern. Wäre dies allein die
Aufgabe, würde das nur einer reinen Upload-Funktion entsprechen. Sie müssen jedoch dafür sorgen, dass andere Module auf die Daten der Bilder- und
Bilder- und Dokumentenverwaltung
23
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Dokumentenverwaltung zugreifen können. Daher müssen Sie die Bilder und
Dokumente auch in einer Datenbank speichern, in der Sie die Daten eines
jeden Eintrags verwalten können.
So muss es dem Benutzer auch einfach möglich sein, Bilder und Dokumente
durch neue Dateien zu ersetzen. Hierbei sollte dem Besucher auf der Webseite
die neue Datei sofort zu Verfügung stehen, nachdem sie ersetzt worden ist,
ohne dass der Benutzer an weiteren Stellen innerhalb des Systems Änderungen
vornehmen muss.
Damit ein Benutzer den Status und die Version seiner Dateien überprüfen
kann, muss er innerhalb des Backends eine Möglichkeit haben, die gespeicherten Dateien zu betrachten.
Bedenken Sie auch folgende Situation: Im Laufe der Zeit werden die Benutzer
des Backends immer mehr Dokumente und Bilder auf dem Webserver speichern. Wenn Sie alle Dateien nun innerhalb eines Verzeichnisses speichern,
wird dies sehr schnell unübersichtlich. Deshalb sollten Sie neben der Bilderund Dokumentenverwaltung auch eine Ordnerverwaltung aufbauen.
Die Funktionen der Ordnerverwaltung müssen auf jeden Fall das Anlegen und
Löschen von Ordnern ermöglichen.
Bei der Bilder- und Dokumentenverwaltung werden keine Module für die Ausgabe auf der Webseite benötigt, da die Bilder dynamisch über die Artikelverwaltung in die einzelnen Artikel integriert werden.
Zusammenfassung der Aufgaben:
왘 Speichern von Dokumenten und Bildern auf dem Webserver und in der
Datenbank
왘 Funktionen zum Überarbeiten und Löschen von Bildern und Dokumenten
왘 Anlegen und Löschen von Verzeichnissen über die Ordnerverwaltung
1.4
Navigationsverwaltung
Schon beim Grobkonzept haben Sie erfahren, dass der Navigation eine zentrale
Rolle auf Ihrer Webseite zufällt. Daher müssen Sie sich in diesem Bereich ausführliche Gedanken darüber machen, welche Situationen bei der Navigation
auf einer Webseite entstehen und mit welchen Funktionen Sie darauf entsprechend reagieren können.
Die Hauptaufgabe der Navigationsverwaltung ist das Einrichten einer oder
mehrerer Navigationen mit den zugehörigen Navigationselementen. Im ersten
Schritt müssen Sie beim Anlegen zuerst einmal eine Bezeichnung und eine
24
Bausteine eines Content Management-Systems
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
Position für das Navigationselement bestimmen. Unter Position können Sie
hierbei die Zuordnung des Navigationselements zu den anderen Navigationselementen innerhalb einer baumartigen Struktur verstehen. Navigationselemente können entweder einem anderen Navigationselement untergeordnet
oder auf derselben Ebene angeordnet sein.
3
4
5
Während Sie eine Navigation aufbauen, werden Sie mit Sicherheit feststellen,
dass die Sortierung der Navigationselemente einer Ebene nicht korrekt ist und
daher geändert werden muss. Hierfür benötigen Sie eine Funktion, die es
Ihnen erlaubt, Navigationselemente zu sortieren bzw. zu verschieben.
6
7
Wenn Sie einmal über Ihre tägliche Arbeit mit Webseiten nachdenken, wird
Ihnen klar werden, dass Sie Inhalte von Seiten erstellen oder bearbeiten, die
auf Ihrer Website noch nicht veröffentlicht werden dürfen. Da Sie in dem vorgestellten Beispielsystem die Inhalte einer Seite immer einem Navigationspunkt zuordnen müssen, können Sie diese erst bearbeiten, wenn Sie den entsprechenden Navigationspunkt erstellt haben. Sie benötigen also folglich eine
Funktion, die es Ihnen ermöglicht, Navigationselemente freizuschalten oder zu
sperren. Nur so können Sie Inhalte von Seiten vorbereiten, die Sie zu einem
späteren Zeitpunkt veröffentlichen möchten.
8
9
Wenn Sie nun bereits eine Funktion zum Freischalten oder Sperren eines
Navigationspunktes besitzen, liegt es auf der Hand, auch eine Funktion zum
Löschen von Navigationselementen einzurichten. Sie kann zum Beispiel dann
notwendig werden, wenn Sie ältere Seiten Ihrer Webseite, die zum Beispiel
Information zu einem bestimmten Event enthalten, wieder löschen möchten.
Nicht alle Seiten Ihrer Webseite werden dem gleichen Aufbau folgen. Daher
müssen Sie zu jedem Navigationselement festlegen, welches Template, anders
gesagt welcher Seitenaufbau, einem Navigationspunkt zugeordnet sein soll. In
der Navigationsverwaltung benötigen Sie daher die Möglichkeit, dass Sie einem
Navigationselement noch ein ausgewähltes Template hinterlegen können.
Bestimmt ist es Ihnen auch schon einmal so gegangen, dass Sie für zwei oder
mehrere Navigationselemente ein und denselben Inhalt haben, zum Beispiel
wenn Sie von mehreren Navigationspunkten auf das eine Kontaktformular
zugreifen möchten. Sie können dies natürlich mit JavaScript-Code im Inhalt
einer Seite lösen, aber dass wäre dann doch etwas plump. Eleganter wäre es
hier, wenn Sie einen Navigationspunkt auf einen anderen Navigationspunkt
umleiten können. Wenn Sie eine entsprechende Funktion, die eine Umleitung
eines Navigationspunktes speichert, in der Navigationsverwaltung erstellen,
haben Sie diese Möglichkeit. Und Sie müssen sich nicht mit anderen Tricks
behelfen.
Navigationsverwaltung
25
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Für die Darstellung der Navigation benötigen Sie mindestens ein Ausgabemodul, das die Anzeige der Navigation auf der Webseite aufbaut. Abhängig von
der Art, wie Sie eine Navigation anzeigen möchten, können hierzu auch mehrere Module erforderlich sein.
In dem Beispielsystem werden Sie sich jedoch auf zwei Typen von Navigation
beschränken, und zwar auf die einstufige und die geteilte Navigation. Eine einstufige Navigation ist aufgebaut wie eine Baumstruktur. In ihr werden alle
Navigationspunkte egal von welcher Ebene untereinander angezeigt. Bei der
geteilten Navigation zeigen Sie die Navigationspunkte in mindestens zwei oder
noch mehr Bereichen auf der Webseite an. Generell haben Sie immer einen
Bereich, in dem Sie die Primärnavigation anzeigen werden, und einen anderen
Bereich, in dem die jeweils zugehörigen Unterpunkte angezeigt werden. In
einer geteilten Navigation könnten Sie auch noch weitere Bereiche einrichten,
in der Sie dann zum Beispiel die dritte oder vierte Ebene der Navigation anzeigen können. Wie Sie also erkennen, können für die Anzeige der Navigation auf
der Webseite durchaus mehrere Module erforderlich sein.
Zusammenfassung der Aufgaben:
왘 Anlegen von Navigationen und Navigationselementen
왘 Umbenennen von Navigationselementen
왘 Sortieren von Navigationselementen
왘 Freischalten und Sperren von Navigationselementen
왘 Löschen von Navigationselementen
왘 Zuweisung von Templates und Einrichten von Seitenweiterleitungen eines
Navigationselements
1.5
Templates und Module
Ein Modul ist das kleinste Element einer Webseite. Es hat die Aufgabe, die
Inhalte, die über die entsprechenden Eingabemasken in der Artikelverwaltung
hinterlegt worden sind, auf der Webseite in dem dazugehörigen Ausgabemodul anzuzeigen. Die Anordnung der Module auf einer Seite wird über ein
Template bestimmt. In einem Template fassen Sie mehrere Module zu einer
Einheit zusammen, die in dieser Anordnung dann auf der Seite einer Webseite
angezeigt werden.
Die letztendliche Anordnung der Module einer Webseite geschieht über das
Seitenlayout. Das Seitenlayout ist nur indirekt Bestandteil des CM-Systems, da
Sie über das Backend auf dieses keinen Einfluss nehmen können.
26
Bausteine eines Content Management-Systems
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
Die Template- und Modulverwaltung hat die Aufgabe, Module und Templates
zu organisieren. Hierzu müssen Sie die Möglichkeit haben, neu erstellte oder
bearbeitete Module innerhalb des Systems zu integrieren, diese zu löschen
oder zu bearbeiten. Die Module des CM-Systems, das Sie in diesem Buch entwickeln werden, bestehen immer aus mindestens einer oder maximal zwei
Dateien. Ein Modul benötigt immer eine Ausgabedatei. Diese stellt die Inhalte
der Datenbank in formatierter Form auf der Webseite dar. Hierzu benötigt die
Ausgabedatei von der Template-Engine die erforderlichen Parameter, welche
Seite angezeigt werden soll. Wenn Sie zum Beispiel ein Modul haben, das eine
Überschrift und einen Textblock auf Ihrer Webseite anzeigen soll, liest die Ausgabedatei die entsprechenden Inhalte für den ausgewählten Navigationspunkt
aus der Datenbank und schreibt diese an die vorgegebenen Stellen in die Webseite. Um Inhalte auslesen zu können, benötigen Sie natürlich an anderer Stelle
eine Eingabedatei, über die Sie die Inhalte erfassen können. Auch hier muss
das System in der Artikelverwaltung wieder automatisch erkennen, welches
Template einem Navigationspunkt zugeordnet ist. Denn aus dem Template
können Sie, ähnlich wie auf der Webseite, über eine Engine die zugeordneten
Module auslesen und – falls erforderlich – die benötigen Eingabedateien einbinden. Bei der oben erwähnten Ausgabedatei werden Sie auf jeden Fall eine
Eingabedatei benötigen, in der Sie die Überschrift und den Textblock erfassen
können. Im Gegensatz zur Ausgabedatei, die immer erforderlich ist, ist die Eingabedatei optional. Wenn Sie sich zum Beispiel einmal eine Navigation ansehen, werden Sie erkennen, dass Sie auf der Webseite eine Ausgabedatei zur
Darstellung der Navigation benötigen, innerhalb des Backends jedoch keine
Eingabedatei, da Sie die Daten für die Navigation innerhalb der Navigationsverwaltung erfassen. Da es sich bei den Modulen um Dateien handelt, müssen
Sie diese nicht nur in der Datenbank verwalten, sondern auch über eine
Upload-Funktion auf dem Webserver speichern.
3
4
5
6
7
8
9
Wie schon gesagt, werden in einem Template die Module zu einer Einheit
zusammengefasst. Sie haben zudem bereits gesehen, dass es durchaus sein
kann, dass Sie mehrere Templates für eine Website benötigen. Aufgabe der
Template-Verwaltung muss es daher sein, dem Benutzer die Möglichkeit zu bieten, verschiedene Templates anzulegen und diese zu bearbeiten. Auch sollten
Sie wieder daran denken, dass Sie Templates sperren können müssen, damit
kein Benutzer unerlaubterweise darauf zugreifen kann. Eine Sperrfunktion ist
vor allem dann wieder von Nutzen, wenn zum Beispiel für einen bestimmten
Bereich Ihrer Website ein Template benötigt haben, das für die gängigen Seiten
auf der Website nicht erforderlich oder passend ist. Wenn Sie nun alle Seiten
dieses Bereichs mit dem spezifischen Template erstellt haben, sollten Sie dieses
danach wieder sperren, damit es nicht versehentlich für andere Seiten ver-
Templates und Module
27
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
wendet wird. Ein Sperren des Templates verhindert also dessen Zuordnung zu
einem Navigationspunkt. Es hat jedoch keine Auswirkung auf die Darstellung
von Seiten innerhalb des Internetauftritts, denen dieses Template bereits zugeordnet ist. Ebenso sollten Sie eine Funktion zum Löschen der Templates in die
Template-Verwaltung einbauen.
Wie Sie an späterer Stelle noch sehen werden, kann es auch Module geben, die
individuell konfiguriert werden können. Dabei soll es möglich sein, dass ein
Modul in jedem Template anders konfiguriert ist. Daher benötigen Sie neben
der Funktion zum Erstellen eines Templates auch eine Funktion, mit der Sie die
Module eines Templates, die eine Konfiguration erfordern, an entsprechender
Stelle konfigurieren. Das Konfigurieren eines Templates wird auch Parametrisierung genannt.
Auf der Webseite sind die Module für die Darstellung der Inhalte verantwortlich, während die Templates die Anordnung und die Zusammensetzung der
einzelnen Module zu einer Einheit sicherstellen. Obwohl Sie für jedes Modul
eine Datei benötigen, können die Module auch nur wieder in Zusammenarbeit
mit der Template-Engine die Inhalte auf der Webseite darstellen.
Zusammenfassung der Aufgaben:
왘 Anlegen von Modulen im CM-System
왘 Speichern von Ein- und Ausgabedateien eines Moduls auf dem Webserver
왘 Löschen von Modulen
왘 Anlegen und Bearbeiten von Templates
왘 Sperren und Freischalten von Templates
왘 Löschen von Templates
왘 Konfiguration von Modulen eines Templates
1.6
Artikelpflege
Für die Pflege der Inhalte ist die Artikelverwaltung eines CM-Systems das Herzstück. In der Artikelverwaltung müssen Sie dem Benutzer die Möglichkeit bieten, zu jedem angelegten Navigationspunkt Artikel anzulegen.
Ein Artikel ist die Zusammenfassung der Inhalte der einzelnen Module, die in
einem Template hinterlegt sind. Es muss dem Benutzer möglich sein, zu einem
Navigationspunkt mehrere Artikel zu hinterlegen. Diese Artikel muss der
Benutzer anlegen, bearbeiten und auch löschen können.
28
Bausteine eines Content Management-Systems
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
Wenn auch hier Artikel oder Ähnliches erst zu einem späteren Zeitpunkt veröffentlicht werden sollen, benötigt der Benutzer in der Artikelverwaltung die
Funktion zum Freischalten oder Sperren von Artikeln.
3
4
Zudem ist es sinnvoll, dass der Benutzer die Reihenfolge der Artikel bearbeiten
kann. Dazu müssen Sie dem Benutzer eine Funktion anbieten, die es ihm
erlaubt, die Reihenfolge der einzelnen Artikel innerhalb eines Navigationspunktes zu verändern.
5
6
Da ein Artikel in den meisten Fällen eine Zusammenstellung von mehreren
Modulen ist, muss die Artikelverwaltung mit der Template- und Modulverwaltung Hand in Hand zusammenarbeiten. Aufgrund eines zugeordneten Templates zu einem Navigationspunkt muss die Artikelverwaltung im ersten Schritt
feststellen, welche Module in einem Template hinterlegt sind. Danach müssen
die einzelnen Module dahingehend überprüft werden, ob für jedes einzelne
Modul eine Eingabedatei vorhanden ist. Nur wenn bei einem Modul eine Eingabedatei vorhanden ist, soll es dem Benutzer möglich sein, dort Inhalte zu
hinterlegen.
7
8
9
Auf die Darstellung der Inhalte auf der Webseite selbst hat die Artikelverwaltung nur indirekten Einfluss. Die Artikelverwaltung dient allein zum Erfassen der Inhalte für die einzelnen Module. Die Darstellung dieser Inhalte wird
wieder von den Ausgabedateien der Module übernommen.
Zusammenfassung der Aufgaben:
왘 Anlegen und Speichern von Artikeln
왘 Freischalten, Sperren und Löschen von Artikeln
왘 Sortieren von Artikeln
왘 Auswertung der Module und Anzeige der Eingabedateien
왘 Bereitstellung von Eingabemasken zur Erfassung von Inhalten
1.7
Die Template-Engine
Die Template-Engine organisiert und strukturiert den Aufbau der Webseite.
Hierzu müssen der Template-Engine bei jedem Seitenaufruf spezifische Parameter übergeben werden. Mit Hilfe dieser Information bestimmt die Engine
im ersten Schritt den ausgewählten Navigationspunkt. Daraus können Sie dann
mit der Template-Engine auf das hinterlegte Template schließen.
Haben Sie bestimmt, welches Template hinter einem Navigationspunkt gespeichert ist, müssen Sie die einzelnen Module des Templates festlegen und in
Die Template-Engine
29
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Zusammenarbeit mit den Daten der Artikelverwaltung die Inhalte der einzelnen Module auslesen und auf der Webseite anzeigen.
Sie sehen, ohne Template-Engine passiert auf einer Webseite rein gar nichts.
Deshalb ist es eine große Herausforderung innerhalb eines CM-Systems, eine
flexible und schnelle Template-Engine zu entwickeln. Wenn Sie selbst keine
Template-Engine entwickeln möchten, können Sie auch auf fertig entwickelte
Template-Engines zurückgreifen, da es hier natürlich auch schon sehr leistungsfähige Systeme gibt. In dem Beispielsystem wird allerdings darauf verzichtet,
da es – wenn Sie ein CM-System entwickeln – auch wichtig ist zu wissen, wie
Sie eine Template-Engine selbst aufbauen und programmieren.
Zusammenfassung der Aufgaben:
왘 Bestimmung des aktuell ausgewählten Navigationspunktes
왘 Auswahl des gespeicherten Templates
왘 Einbinden der Ausgabedateien der in einem Template zusammengefassten
Module
왘 Anzeige der Inhalte der Artikel in den dafür vorgesehenen Ausgabedateien
der Module
1.8
Zusammenfassung
Wenn Sie sich die Informationen der vorangegangenen Seiten noch einmal vergegenwärtigen, können Sie erkennen, dass die Aufgaben und Funktionen eines
CM-Systems einen größeren Umfang einnehmen. Bislang wurde jedoch noch
in keiner Weise auf die Programmierung oder auf die zu einem CM-System
gehörende Datenbank eingegangen. Außerdem wurden bei der Erstellung des
Grob- und Feinkonzeptes der einzelnen Bereiche nur die wichtigsten Funktionen und Aufgaben betrachtet. Wenn Sie am Schluss des Buches mit der
Programmierung eines CM-Systems vertraut sind, werden Ihnen bestimmt
noch viele weitere Aufgaben für Ihr System einfallen.
Bei dem Feinkonzept wurde bisher auch an keiner Stelle auf die Aufgaben der
Benutzeroberfläche eingegangen. Diese wurden außer Acht gelassen, da die
Benutzeroberfläche Grundlage eines jeden Backends ist, unabhängig davon, ob
es sich um eine Produktverwaltung oder ein CM-System handelt.
Wenn Sie nun mit der Entwicklung des CM-Systems beginnen, werden Sie dennoch mit dem Aufbau der Benutzeroberfläche anfangen, das Sie ohne
Benutzeroberfläche schließlich keinen der anderen Bereiche in Ihr System integrieren können.
30
Bausteine eines Content Management-Systems
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2 Der allgemeine
Aufbau der Benutzeroberfläche
2
3
4
5
6
2.1
Allgemeine Hinweise zum Aufbau einer
Benutzeroberfläche .................................................. 33
2.2
Die Datenbankanbindung mit PHP ......................... 38
2.3
Aufbau einer Navigation .......................................... 42
2.4
Die Primärnavigation ............................................... 43
2.5
Aufbau der Primärnavigation mit XML .................... 52
2.6
Die Sekundärnavigation .......................................... 54
2.7
Die Listenschaltflächen ........................................... 68
2.8
Hinweisfenster, Content-Bereich und
Funktionskopfleisten ............................................... 81
2.9
Funktionsleisten und Aktionsschaltflächen ............. 82
2.10 Feintuning der Benutzeroberfläche ......................... 91
2.11 Fazit ........................................................................ 93
7
8
9
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
2
Der allgemeine Aufbau der Benutzeroberfläche
3
4
Nachdem Sie die Bausteine Ihres CM-Systems definiert haben, ist es
verständlich, dass Sie sofort mit der Programmierung der einzelnen
Module beginnen möchten. Doch vor der Programmierung der einzelnen Bausteine steht die Entwicklung der Benutzeroberfläche. In diesem Kapitel beschäftigen Sie sich mit dem grundlegenden Aufbau des
Systems, den Schaltflächen und speziellen Dateien für die Aktionssteuerung des Systems.
5
6
7
8
Kein System, mit dem Sie arbeiten oder noch arbeiten werden, kommt ohne
eine zugehörige Benutzeroberfläche aus, die ein komfortables Arbeiten ermöglicht. Ein CM-System beruht im Wesentlichen auf einer Datenbank, in der die
Informationen verwaltet werden. In dieser werden alle Daten gespeichert, die
auf der Webseite dargestellt werden sollen. Da der Aufbau der Navigation des
Backends dynamisch erfolgen soll, benötigen Sie in der Datenbank auch noch
eine Tabelle, welche diese erforderlichen Daten speichert. Es ist für einen versierten Benutzer durchaus möglich, über die Benutzeroberfläche einer Datenbank wie zum Beispiel phpMyAdmin die Daten des CM-Systems direkt zu pflegen und zu verändern, aber natürlich ist dies kein geschickter Weg. Abgesehen
davon ist diese Option nur einigen wenigen Benutzern vorbehalten, die über
die entsprechende Erfahrung im Umgang mit Datenbanken verfügen. Für den
Benutzer, der sich nicht tiefer in die Materie der Datenbanken einarbeiten will
und dies auch nicht muss, müssen Sie eine benutzerfreundlichere Oberfläche
erstellen. Diese werden Sie in diesem Kapitel Schritt für Schritt aufbauen.
2.1
9
Allgemeine Hinweise zum Aufbau einer Benutzeroberfläche
Beim Aufbau einer Benutzeroberfläche müssen Sie mehrere Faktoren berücksichtigen. Dies sind, um nur einige wichtige zu nennen, das Design der Oberfläche, der logische Aufbau des Backends und die Anordnung der Bedienelemente.
Alle diese Komponenten müssen am Schluss ein abgerundetes Erscheinungsbild ergeben. In vielen Fällen kommt dies einer Gratwanderung gleich, da Sie,
um eine Einheit zu erstellen, immer wieder Kompromisse eingehen und deren
Auswirkungen stets aufs Neue abschätzen müssen. Ein noch so gut ausgearbeitetes Design bringt Ihnen und Ihren Benutzer nichts, wenn der logische Aufbau
Der allgemeine Aufbau der Benutzeroberfläche
33
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
nicht selbsterklärend ist. Gemeint ist hier der logische Aufbau der Hauptnavigation, die Zuordnung von untergeordneten Punkten genauso wie die
Bezeichnung der Menüpunkte.
Sie haben bestimmt schon einmal erlebt, dass der Kunde oder die Anwender
eines Systems mit Fragen auf Sie zugekommen sind, die aus Ihrer Sicht Selbstverständlichkeiten betrafen. Dies kommt sehr häufig vor, da man als Programmierer oder Entwickler des Öfteren die Sicht des Anwenders aus den Augen
verliert. Doch eine gute Benutzeroberfläche zeichnet sich dadurch aus, dass
weniger versierte Benutzer ohne große Einarbeitungszeit damit zurechtkommen und die Standardaufgaben selbstständig erledigen können. Über den
Aufbau von Benutzeroberflächen und deren Benutzerfreundlichkeit könnte an
dieser Stelle noch viel gesagt werden, dies würde jedoch hier zu weit führen.
Wie oben bereits erwähnt worden ist, gehört zum Aufbau des Backends natürlich ein benutzerfreundliches Design. Da jeder andere Vorstellungen von
einem guten Design hat, wird an dieser Stelle auf seine Entwicklung nicht
näher eingegangen. Das Design des Beispielsystems ist – wie Sie sehen werden
– relativ einfach gehalten, damit es bei Bedarf mit einfachen Mitteln geändert
und angepasst werden kann. Zudem soll der Schwerpunkt beim Aufbau des
CM-Systems nicht beim Design liegen, vielmehr sollen Sie sich bei der
Programmierung stärker auf die Funktionalität konzentrieren können. Trotzdem müssen Sie sich kurz mit dem allgemeinen Aufbau beschäftigen, um an
späterer Stelle zu verstehen, in welchem Bereich innerhalb des Systems Änderungen vorgenommen werden.
Wenn Sie nach dem Login die Oberfläche auf Ihrem Bildschirm geladen haben,
werden Sie ungefähr Folgendes sehen:
Abbildung 2.1 Beispiel einer Benutzeroberfläche
34
Der allgemeine Aufbau der Benutzeroberfläche
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
Die Bildschirmansicht kann sich bei Ihnen von der oben gezeigten unterscheiden, da dies immer auch abhängig davon ist, welchen Menüpunkt Sie ausgewählt haben.
3
4
Wenn Sie sich jedoch weiter durch das System durcharbeiten, können Sie die
Struktur erkennen, d.h., wie die Oberfläche logisch aufgebaut ist. Den logischen Aufbau zeigt Abbildung 2.2.
5
6
Bereich A: Primärnavigation
Bereich B:
7
Bereich C: Aktionsbereich
Sekundärnavigation
8
Bereich D: Contentbereich
9
Abbildung 2.2 Logischer Aufbau der Benutzeroberfläche
Dieser Aufbau ist innerhalb des Systems durchgängig umgesetzt. Hierdurch
vermitteln Sie dem Benutzer den Eindruck eines organisierten Systems, in dem
er sich innerhalb kürzester Zeit zurechtfindet.
Der Bereich A ist der Primärbereich des Systems. Hier finden Sie alle primären
Menüpunkte, die Schaltfläche Exit und den Namen des aktuell angemeldeten
Benutzers.
Im Bereich B, dem Sekundärbereich, befindet sich die Sekundärnavigation. Es
sind drei verschiedene Typen der Sekundärnavigation möglich: die Menüpunktdarstellung, die CMS-Navigation oder die Ordnerlisten. Die Darstellung
der einzelnen Typen erfolgt abhängig vom gewählten primären Menupunkt
und wird im weiteren Verlauf dieses Kapitels noch ausführlich erklärt.
Im Bereich C, dem Aktionsbereich, finden Sie alle notwendigen Aktionsschaltflächen, die zum Arbeiten erforderlich sind.
Der Bereich D ist schließlich der Content-Bereich. Er ist auch der eigentliche
Arbeitsbereich. Hier finden Sie die Listendarstellungen mit den Listenschaltflächen und alle Eingabeformulare, die zum Pflegen und Verwalten von Artikeln, Navigationspunkten und allen weiteren Einstellungen notwendig sind.
In dem Beispielsystem erfolgt der Aufbau des Grundgerüstes innerhalb eines
Framesets. Selbstredend können Sie Ihre Oberfläche auch ohne Framesets auf-
Allgemeine Hinweise zum Aufbau einer Benutzeroberfläche
35
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
bauen, doch unter gewissen Umständen erweist sich die Verwendung von Frames durchaus als Vorteil, da bei Frames immer nur die Seiten innerhalb des
Backends neu geladen werden müssen, die auch wirklich neue Informationen
anzeigen sollen. In dem Beispielsystem wird der Primärbereich nur einmal
geladen, und zwar beim ersten Aufruf der Seite. Wenn Sie zum Beispiel in
einem angewählten Bereich des Backends arbeiten, wird immer nur der Aktions- und der Content-Bereich aktualisiert. Die Verwendung von Framesets ist
natürlich Geschmackssache. Beim Aufbau der eigentlichen Webseite sollten Sie
heutzutage auf die Anwendung von Frames generell verzichten.
Um auf einer Webseite PHP darzustellen, haben Sie, wie Ihnen sicherlich
bekannt ist, mehrere Möglichkeiten. Eine Variante ist das Einbetten des PHPCodes innerhalb von HTML. Hierzu müssen Sie mit definierten Tags angeben,
an welcher Stelle Ihr PHP-Code beginnt und auch wieder endet. Dabei können
Sie die Shorttags <? und ?> verwenden. Vergewissern Sie sich jedoch, ob diese
Tags auf Ihrem Webserver auch funktionieren. Nicht jeder Provider hat diese
Form der Tags eingeschaltet. Eine Alternative zu den oben genannten Shorttags
ist die Einbindung des PHP-Codes über die Tags <?php und ?>. Welche Tags Sie
nun verwenden, hängt letztendlich von Ihnen und den Gegebenheiten Ihres
Providers ab.
Bei dem oben beschriebenen Weg betten Sie den PHP-Code direkt in den
HTML-Code ein. Natürlich können Sie auch über PHP den gesamten HTMLCode durch Verwendung von echo-Anweisungen erzeugen. Dann wäre Ihr
gesamtes System vollständig in PHP programmiert. Welchen Weg Sie hierbei
wählen, ist auch wieder ganz Ihnen überlassen. In dem Beispielsystem werden
Sie beide Varianten finden. Wie bei vielen Dingen im Leben, ist es auch beim
Aufbau der Programmierung so, dass jeder Programmierer seine ganz eigene
Meinung zu dieser Thematik hat. Um das Anpassen von Formularen innerhalb
des Systems einfach zu halten, wurde vor allem an diesen Stellen Gebrauch
davon gemacht, den PHP-Code in HTML einzubetten. Bei der Darstellung von
Listenübersichten werden Sie hauptsächlich reinen PHP-Code finden.
Doch nun wieder zurück zum Aufbau des Grundgerüst der Benutzeroberfläche,
die wie erwähnt, über ein Frameset aufgebaut ist.
<frameset rows="68,*" frameborder="NO" border="0"
framespacing="0">
<frame name="navprim" scrolling="NO" noresize
src="nav_prim.php<?echo $anhang?>" >
<frameset cols="191,*" frameborder="NO" border="0"
framespacing="0">
36
Der allgemeine Aufbau der Benutzeroberfläche
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
<frame name="subnav" src="subnav.php<?echo $anhang?>">
<frameset rows="41,*" frameborder="NO" border="0"
framespacing="0">
<frame name="headline" scrolling="No" noresize
src="gheadline.php<?echo $anhang?>">
<frame name="funktion" scrolling="AUTO" noresize
src="start/function.php<?echo $anhang?>">
</frameset>
</frameset>
</frameset>
3
4
5
6
7
Listing 2.1 Frameset der Benutzeroberfläche (adminstart.php)
8
Die Benutzeroberfläche wird über die Datei adminstart.php zusammengesetzt. In dieser Datei sehen Sie ein Frameset mit vier Frames.
9
Der erste Frame mit Namen navprim (Bereich A) stellt den Primärbereich des
Systems dar. In diesem wird die Datei nav_prim.php geladen. Sie ist verantwortlich für den Aufbau der Primärnavigation. Neben der Navigation werden in dem Primärbereich noch das aktuelle Datum und der eingeloggte Benutzer angezeigt.
In dem Frame subnav (Bereich B) werden die sekundären Menüpunkte eines
ausgewählten Primärmenüpunktes angezeigt. Diese Aufgabe übernimmt die
Datei subnav.php.
Der Frame headline (Bereich C) bietet Platz für den Aktionsbereich, in dem alle
notwendigen Aktionsschaltflächen, die zum Arbeiten erforderlich sind, angezeigt werden. Beim ersten Aufruf direkt nach dem Login wird die Datei
gheadline.php aufgerufen. Diese Datei hat keine Schaltflächen hinterlegt und
wird im weiteren Verlauf als leere Seite verwendet.
Im Frame funktion (Bereich D) werden alle Eingabemasken und Listenübersichten angezeigt. Beim Start wird nun die Datei start/function.php geladen. Diese Seite ist eine reine HTML-Seite und kann von Ihnen nach Belieben
angepasst werden. Im Beispielsystem steht auf dieser Seite nur ein Begrüßungstext.
Nachdem Sie nun einen Überblick über das Gerüst der Benutzeroberfläche
erlangt haben, werden Sie nun die Dateien für die Bereiche Primärnavigation
und Sekundärnavigation genauer betrachten.
Im Anschluss daran widmen Sie sich den Dateien des Frames headline.
Allgemeine Hinweise zum Aufbau einer Benutzeroberfläche
37
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Die Dateien, die in dem Frame funktion aufgerufen werden, betrachten Sie
jeweils bei der Beschreibung der einzelnen Menüpunkte des CM-Systems.
2.2
Die Datenbankanbindung mit PHP
Um über das Backend auf die einzelnen Tabellen und die Datenbank zuzugreifen, müssen Sie zuerst eine Datei erstellen, mit der Sie die Verbindung zum
Datenbankserver aufbauen können. Es ist sinnvoll, diese Funktionalität in einer
externen Datei zu hinterlegen, damit Sie bei Änderungen der Datenbankverbindung die Daten durch Bearbeiten einer einzelnen Datei anpassen können.
Da Sie als Datenbank MySQL gewählt haben, werden Sie vor keine große
Herausforderung gestellt, da PHP zusammen mit MySQL ein eingespieltes
Team bildet und für Datenbankoperationen viele Befehle bereithält.
In dem System wird die Verbindung für die Datenbank von der Datei
__include_databasefunction.php übernommen. Diese Datei finden Sie im
Verzeichnis include und muss in jeder Datei, die auf die Datenbank zugreifen
soll, über eine require()-Anweisung eingebunden werden.
Der Aufbau der Datei selbst ist verhältnismäßig leicht nachzuvollziehen. Zuerst
müssen Sie die Parameter für die Datenbank definieren. Dazu gehört einmal
der Host, also der Name des Servers, auf dem die Datenbank läuft. In vielen Fällen muss hier der Wert localhost angegeben werden. Es folgen die Angaben
zu dem Benutzer, der Zugriff auf die Datenbank haben soll und dessen Passwort. Für ein gesichertes System ist es immer erforderlich, neben dem User
root einen expliziten User für die Datenbank anzulegen. Besonders bei lokalen
Entwicklungssystemen ist hierauf zu achten.
Letztendlich müssen Sie noch angeben, auf welche Datenbank Sie mit Ihrer
Datenbankverbindung zugreifen möchten.
//*____________________________________________________________
//* Submodul: Datenbankparameter
//*____________________________________________________________
$HOST = "localhost";
$User = "user";
$Passw = "geheim";
$DBase = "Datenbank";
Listing 2.2 Definition der Datenbankparameter
An welcher Stelle Sie diese Datei auf Ihrem Webserver speichern, ist wieder
Ihnen überlassen. Zum einen können Sie alle Dateien, die Sie mit einer
38
Der allgemeine Aufbau der Benutzeroberfläche
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
zugeordnet sein. Wie ein Template aufgebaut ist und wie die Zuordnung der
Module erfolgt, erfahren Sie im nächsten Abschnitt.
Sie haben sich jetzt bestimmt die Frage gestellt, wie eigentlich die Ein- und
Ausgabedateien von Modulen aussehen. Die Beantwortung dieser Frage finden
Sie für die Eingabemodule in Kapitel 7, Die Artikelverwaltung, und für die Ausgabedateien in Kapitel 8, Eine Webseite aus der Praxis.
6.2
Die Template-Verwaltung
Mit den Modulen haben Sie nun den kleinsten Baustein zur Darstellung der
Informationen auf der Webseite aufgebaut. Ein Modul allein bringt Sie jedoch
noch nicht weiter. Auf einer Webseite müssen Sie mehrere Module zu einer
Einheit zusammenfassen. Generell benötigen Sie auf jeder Seite das Modul für
die Navigation. Doch damit wäre Ihre Webseite nicht besonders aussagekräftig.
Deshalb müssen Sie zumindest ein Modul für einen Artikeltext hinzufügen.
Die Zusammenfassung von mehreren Modulen zu einer Einheit wird Templates genannt. In dem CM-System ist die Anzahl der verfügbaren Templates nicht
beschränkt. Sie können also für jeden Navigationspunkt Ihrer Website ein
anderes Template erstellen und dieses dem Navigationspunkt zuordnen.
Normalerweise wird dies jedoch nicht der Fall sein, da sich der Aufbau der
einzelnen Seiten Ihrer Website nicht immer voneinander unterscheiden wird.
Im weiteren Verlauf dieses Kapitels und in Kapitel 8, Eine Webseite aus der Praxis, werden Sie feststellen, dass ein Template immer aus mehreren Modulen
zusammengesetzt wird. Die Anzahl von Modulen innerhalb eines Templates ist
im Beispielsystem auf zehn Module pro Template beschränkt. Hierfür gibt es
zwei Gründe. Zum Ersten können Sie durch die Beschränkung den Aufbau
eines Templates über das Backend besser nachvollziehen. Zum Zweiten sind
bei den meisten Webseiten zehn Module wahrscheinlich vollkommen ausreichend.
Beim Aufbau eines Templates mit dem CM-System ordnen Sie nun den CMSBoxen, die Sie in das Seitenlayout einfügen müssen, die Module zu. Die Zuordnung der einzelnen Module ist hierbei beliebig. Sie sollten jedoch darauf achten, dass Sie bestimmte Module wie zum Beispiel die Navigation in jedem Template an derselben Stelle anordnen. Rein theoretisch können Sie die Module
zwar frei anordnen, hinsichtlich der Benutzerführung Ihrer Website sollten Sie
aber auf eine klare Struktur achten.
310
Seitenlayouts, Templates und Module
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
6.2.1
2
Die Templates in der Datenbank
3
Den Aufbau eines Templates müssen Sie wieder in einer Tabelle in der Datenbank speichern, damit das CM-System beim Aufruf der Webseite über die Template-Engine den korrekten Aufbau der Webseite und des Templates wiedergeben kann. In der Modulverwaltung haben Sie bereits gesehen, dass Sie
Module in ein Template einbauen können, welche Sie noch zusätzlich konfigurieren müssen. Um die Datenbank und auch die Datenbanktabellen so schlank
und effektiv wie möglich zu gestalten, sollten Sie den Aufbau eines Templates
und die Konfiguration der Module eines Templates voneinander trennen.
4
5
6
7
Wenn Sie nun mit phpMyAdmin einmal einen Blick in die Datenbank des CMSystems werfen, werden Sie in der Tabellenübersicht zwei Tabellen finden, die
namentlich zu der Template-Verwaltung passen. Es sind dies die Tabellen
tblcms_templates und tblcms_templates_config. Wie beim gesamten Aufbau des Systems sollten Sie auch hierbei großen Wert darauf legen, dass die
Bezeichnungen der Tabellen für sich aussagekräftig sind.
8
9
Sie können sich jetzt bereits denken, welche Aufgaben die einzelnen Tabellen
haben, ohne dass Sie sich deren Struktur genauer ansehen müssen. In der
Tabelle tblcms_templates speichern Sie alle Templates, die Sie in dem System
verwenden möchten. Die Konfigurationen der einzelnen Module eines Templates werden in der Tabelle tblcms_templates_config gespeichert. Wahrscheinlich hätten Sie sich die Erklärungen auch allein aufgrund der Namen der
Tabellen herleiten können. Sie sehen also, es ist immer sinnvoll, den Tabellen
aussagekräftige Namen zu geben.
Betrachten Sie nun die einzelnen Tabellen. Wie schon festgestellt, werden in
der Tabelle tblcms_templates die Daten eines Templates gespeichert. Für die
eindeutige Identifizierung eines Templates benötigen Sie wie in jeder anderen
Tabelle auch einen Ident-Wert, der in dem Datenfeld id gespeichert wird. Für
die tägliche Arbeit mit dem System ist dieser Wert natürlich nicht so eindeutig,
oder wissen Sie in einem halben Jahr noch, welche Aufgabe das Template mit
der Nummer 5 hatte? Daher sollten Sie noch ein Datenfeld für eine kurze
Bezeichnung des Templates vorsehen, das Datenfeld titel.
Wenn Sie sich nun die Struktur der Tabelle ansehen, erkennen Sie, dass in der
Tabelle insgesamt zehn Datenfelder angelegt sind, die alle ähnlich benannt
sind. Daraus schließen Sie wahrscheinlich, dass diese Felder weitgehend dieselbe Aufgabe haben. Es sind die Datenfelder cmsbox0 bis cmsbox9. In diesen
Feldern werden Sie über die Template-Verwaltung die Zuordnung der einzelnen Module innerhalb eines Templates festlegen. Wie Sie daraus richtig
schlussfolgern, haben Sie damit die Möglichkeit, einem Template maximal 10
Module zuzuordnen.
Die Template-Verwaltung
311
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
In der Navigationsverwaltung haben Sie beim Anlegen eines neuen Navigationspunktes bereits auf das Datenfeld »Standard« der Tabelle tblcms_
templates zurückgegriffen. Sie wissen daher also auch schon, dass über dieses
Feld das Standard-Template definiert wird.
Für die Arbeiten mit einem System, in dem des Öfteren Daten ergänzt oder
bearbeitet werden, ist es immer besser, bei jedem Speichervorgang das Datum
der letzten Änderung mitzuspeichern. Zudem sollten Sie nicht vergessen, die
Information festzuhalten, wann ein Template das erste Mal eingerichtet wurde.
Hierfür können Sie die Felder date_new und date_edit verwenden.
Manchmal möchten Sie auch schon im Voraus ein Template für die spätere Verwendung erstellen, das Sie dem Benutzer jedoch noch nicht anbieten möchten.
In der Template-Verwaltung werden Sie daher wieder eine Funktion einbauen,
die es Ihnen ermöglicht, Templates freizuschalten oder zu sperren. Den Status
eines Templates speichern Sie dann in dem Datenfeld publik. Zu guter Letzt
sollten Sie noch überwachen, wer innerhalb Ihres Systems Änderungen vornimmt. Dazu müssen Sie zu jedem Template den Benutzer speichern, der eine
Aktion vorgenommen hat. Hierfür bietet sich das Datenfeld userid an.
Nachfolgend sehen Sie in strukturierter Form den Aufbau der Tabelle tblcms_
templates:
Feldname Feldtyp
Beschreibung
Id
integer
Automatisch vergebener Wert
Titel
varchar() Bezeichnung des Templates
Cmsbox0
integer
Modul, das in der CMS-Box 0 des Frontends hinterlegt ist.
Cmsbox1
integer
Modul, das in der CMS-Box 1 des Frontends hinterlegt ist.
Cmsbox2
integer
Modul, das in der CMS-Box 2 des Frontends hinterlegt ist.
Cmsbox3
integer
Modul, das in der CMS-Box 3 des Frontends hinterlegt ist.
Cmsbox4
integer
Modul, das in der CMS-Box 4 des Frontends hinterlegt ist.
Cmsbox5
integer
Modul, das in der CMS-Box 5 des Frontends hinterlegt ist.
Cmsbox6
integer
Modul, das in der CMS-Box 6 des Frontends hinterlegt ist.
Cmsbox7
integer
Modul, das in der CMS-Box 7 des Frontends hinterlegt ist.
Cmsbox8
integer
Modul, das in der CMS-Box 8 des Frontends hinterlegt ist.
Cmsbox9
integer
Modul, das in der CMS-Box 9 des Frontends hinterlegt ist.
Tabelle 6.2 Aufbau der Tabelle tblcms_templates
312
Seitenlayouts, Templates und Module
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Feldname Feldtyp
Beschreibung
Standard
Definiert das Template als Standard-Template:
interger
2
3
1: Template ist als Standard festgelegt
4
Date_new date
Das Datum, an dem das Dokument erstellt wurde.
Date_edit
date
Das Datum, an dem das Dokument zuletzt geändert wurde.
Publik
integer
Aktueller Status des Templates:
5
6
0: Template ist gesperrt
1: Template ist freigeschaltet
Userid
integer
7
Die ID des Benutzers, der das Dokument angelegt oder zuletzt
bearbeitet hat.
8
Tabelle 6.2 Aufbau der Tabelle tblcms_templates (Forts.)
9
Bei Ihrem Blick auf die Datenbank des CM-Systems konnten Sie sehen, dass für
die Template-Verwaltung noch eine weitere Tabelle angelegt ist. Die Tabelle
tblcms_templates_config wurde bereits in der Modulverwaltung und bei
der Entwicklung der einstufigen und geteilten Navigation der Webseite angesprochen.
Vom Aufbau der Navigation wissen Sie, dass Sie an einer Stelle innerhalb des
Systems festlegen müssen, welchen Navigationsbaum Sie darstellen möchten.
Als Sie die Navigation entwickelt haben, mussten Sie diesen Wert noch manuell in den Aufruf der Funktion schreiben. Im CM-System soll dies an einer
Stelle gespeichert werden. Die Tabelle, in der Sie diese Angabe speichern, heißt
– wie Sie jetzt wahrscheinlich bereits richtig vermuten – tblcms_templates_
config.
Betrachten Sie den Aufbau der Tabelle genauer, werden Sie zunächst einmal
mehrere Datenfelder sehen, deren Bedeutung auf den ersten Blick nicht eindeutig ersichtlich ist. Gehen Sie deshalb die Tabelle Feld für Feld durch. Das
Datenfeld id ist Ihnen bekannt, in diesem wird ein fortlaufender Ident-Wert
der Tabelle gespeichert.
Um die Zuordnung einer Konfiguration zu einem Template zu definieren, müssen Sie in der Tabelle angeben, auf welches Template sich ein Datensatz
bezieht. Diese Angabe finden Sie in dem Feld templateid. Innerhalb eines
Templates können natürlich mehrere Module festgelegt sein, die Sie konfigurieren müssen. Daher ist die Zuordnung einer Konfiguration zu einem Template allein noch nicht aussagekräftig genug. Um dies exakt zu bestimmen, müssen Sie noch angeben, auf welche CMS-Box sich eine Konfiguration bezieht.
Diese Angabe wird logischerweise in dem zur Verfügung stehenden Feld
cmsboxnr gespeichert.
Die Template-Verwaltung
313
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Bei der Vorstellung der vorhandenen Module haben Sie drei Module kennen
gelernt, die Sie zusätzlich konfigurieren müssen. Dabei handelt es sich bei zwei
Modulen um eine Navigation und bei dem dritten um die Artikelliste. Eine
Navigation richten Sie ganz einfach ein, indem Sie angeben, welcher Navigationsbaum ausgelesen werden soll. Diese Angabe müssen Sie für die TemplateEngine in dem Feld navid speichern.
Für die Konfiguration einer Artikelliste sind mehrere Angaben erforderlich.
Zuerst einmal müssen Sie bestimmen, aus welchem Navigationspunkt eine
Artikelliste erstellt werden soll. Diese Angabe hinterlegen Sie in dem Datenfeld
listid. Dabei können Sie innerhalb eines Navigationspunktes beliebig viele
Artikel ablegen. In der Artikelliste ist es daher sinnvoll, die Anzeige auf eine
bestimmte Anzahl zu beschränken. Die Anzahl der anzuzeigenden Einträge
wird im Datenfeld listanz gespeichert. Zum Schluss müssen Sie nun noch
definieren, ob in einer Artikelübersicht nur die Überschrift oder ein eventueller Anreißer des Artikels angezeigt werden soll. Hierfür steht Ihnen das Feld
listoption zur Verfügung.
Die letzten zwei Felder der Tabelle sind Ihnen bereits bekannt. Es handelt sich
hierbei in dem Feld date_edit um das Datum der letzten Änderung und in
dem Feld userid um die Angabe des Benutzers, der die letzte Änderung vorgenommen hat.
Feldname
Feldtyp Beschreibung
Id
integer
Automatisch vergebener Wert
Templateid integer
Id des Templates, dem die Konfiguration zugeordnet ist.
Cmsboxnr
integer
Enthält die Nummer der CMS-Box eines Templates.
Navid
integer
Die Nummer eines Navigationsbaums, der in einem Navigationsmodul ausgegeben werden soll.
Listid
integer
Die Nummer eines Navigationselementes, von dessen Artikeln eine
Listendarstellung im Frontend aufgebaut werden soll.
Listanz
integer
Die Anzahl der anzuzeigenden Listeneinträge
Listoption
integer
Anzeigeoption für die Darstellung einer Liste
Date_edit
date
Das Datum, an dem die Konfiguration zuletzt geändert worden ist.
Userid
integer
Die ID des Benutzers, der die Konfiguration angelegt oder zuletzt
bearbeitet hat.
Tabelle 6.3 Aufbau der Tabelle tblcms_templates_config
314
Seitenlayouts, Templates und Module
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
Wenn Sie Ihrem CM-System weitere Module hinzufügen, die auch einer
Konfiguration bedürfen, sollten Sie die Tabelle tblcms_templates_config um
die entsprechenden Felder erweitern. Wenn Sie das Beispielsystem weiter ausbauen möchten, sollten Sie vielleicht eine Tabelle mit generischen Feldern in
Betracht ziehen.
3
4
Nun haben Sie alle Tabellen kennen gelernt, die Sie benötigen, um eine Template-Verwaltung innerhalb des CM-Systems aufzubauen. Nun können Sie sich
ganz den Aufgaben und Funktionen der Template-Verwaltung widmen.
5
6.2.2
7
6
Funktionen der Template-Verwaltung
Zu Beginn sollten Sie wieder festlegen, welche Aufgaben Sie mit der TemplateVerwaltung erfüllen möchten. Die wichtigsten Funktionen der Template-Verwaltung sind natürlich das Anlegen von neuen Templates innerhalb des Systems und die Konfiguration der Module, die den CMS-Boxen zugeordnet sind.
8
9
Neben diesen zwei Hauptfunktionen dürfen Sie weitere Grundfunktionen
nicht vergessen, die Sie in diesem Abschnitt betrachten werden. Die Hauptfunktionen werden Sie danach in zwei eigenen Abschnitten kennen lernen.
Zu den Grundfunktionen zählen Sie sicherlich eine Anzeige, die dem Benutzer
alle vorhandenen Templates innerhalb des Systems zeigt. Ebenso sollten Sie die
Funktion zum Löschen und zum Freischalten und Sperren eines Templates
nicht vergessen.
Wählen Sie in dem Beispielsystem einmal den Menüpunkt Templates an, dann
sehen Sie in der Sekundärnavigation die folgende Ansicht.
Abbildung 6.8 Sekundärnavigation des Menüpunktes »Templates«
In der Navigation des Backends ist zu jedem sekundären Menüpunkt eine Datei
hinterlegt. Generell handelt es sich dabei um die Datei data_list.php, welche
die Aufgabe hat, eine Übersichtsseite des jeweiligen Bereichs zu erstellen. In
dem Beispielsystem sind alle Dateien der Template-Verwaltung im Verzeichnis
convw_templates gespeichert. Wenn Sie nun also den Menüpunkt SeitenTemplates auswählen, erhalten Sie im Content-Bereich die Übersicht der Templates.
Die Template-Verwaltung
315
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Beim Aufbau der Übersichtsseite müssen Sie alle Templates, die innerhalb des
Systems angelegt sind, strukturiert anzeigen. Außerdem sollten Sie dem Benutzer noch Listenschaltflächen zur Verfügung stellen, mit denen er weitere Funktionen ausführen kann.
Um auf alle erforderlichen Funktionen zugreifen zu können, müssen Sie zuerst
die externen Dateien mit require-Anweisungen einbinden.
require("../includes/__include_userfunctions.php");
require("../includes/__include_databasefunction.php ");
require("../includes/__design_layoutbox_oberflaeche.php");
require("../includes/__include_list_options.php");
require("../includes/__include_templates.php");
logged_user();
Listing 6.27 Einbinden der Dateien für die Datenbank, die Oberfläche, die Listenschaltflächen
sowie die spezifischen Funktionen der Modulverwaltung
Für den Programmverlauf sind wieder weitere Parameter erforderlich, die Sie
in den entsprechenden Variablen speichern.
$anhang = "?sid=".$_GET["sid"];
$stable = "tblcms_templates";
$spath = "convw_templates";
Listing 6.28 Festlegung der Parameter für die Methoden der Listenschaltflächen-Klasse
Anschließend erstellen Sie mit den Methoden zum Aufbau des Layouts den
äußeren HTML-Rahmen, in den die Funktion content_data() eingebettet
wird.
$designpage = new designlayout;
$designpage->pagestart(1);
$designpage->boxhead("Templates -- Übersicht", 637);
content_data();
$designpage->boxdown(0,637);
$designpage->pageend();
Listing 6.29 Aufruf der Klassen zur Darstellung der Oberfläche und Einbinden der Hauptfunktionalität der Seite
In der Funktion content_data() müssen Sie die Funktion loadentrylisttemplates() aufrufen, die eine Übersicht der vorhandenen Templates erstellt.
Diese Funktion sollten Sie in der Datei __include_templates.php speichern.
316
Seitenlayouts, Templates und Module
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
Mit einer global-Anweisung geben Sie die Variablen $anhang, $stable und
$spfad, die Sie bereits in der Datei data_list.php festgelegt haben, in der
Funktion bekannt. Zudem speichern Sie in der Variablen $jstrover den Aufruf der JavaScript-Funktion zur Visualisierung der Tabellenzeilen.
3
4
//**____________________________________________________________
//** Submodul: loadentrylistmodule()
//** Beschreibung: Anzeigen aller Module
//**____________________________________________________________
5
6
function loadentrylistmodule()
{
global $anhang;
global $stable, $spfad;
$jstrover = "onmouseover=setPointeron(this)
onmouseout=setPointeroff(this)";
7
8
9
Listing 6.30 Globalisierung der Parameter und Festlegung der MouseOver-Effekte
Mit einer SQL-Abfrage auf die Tabelle tblcms_templates können Sie alle vorhandenen Datensätze auslesen. Zur leichteren Orientierung der Benutzer sollten Sie die Datensätze in alphabetischer Reihenfolge anzeigen.
$sql = "SELECT id, titel, publik, date_new, date_edit FROM
tblcms_templates ORDER BY titel";
$res=send_sql($db,$sql);
Listing 6.31 Einfache Abfrage zur Auflistung aller Module
Wenn die Abfrage keine leere Anzeige liefert, können Sie mit einer whileSchleife die einzelnen Datensätze anzeigen.
Nun müssen Sie festlegen, welche Funktionen dem Benutzer zur weiteren
Bearbeitung eines Templates zur Verfügung stehen sollen. Auf jeden Fall benötigen Sie eine Listenschaltfläche, über die der Benutzer die Bearbeitungsmaske
öffnen kann, um Änderungen an einem Template vorzunehmen. Den Rückgabewert der Methode zur Anzeige der Listenschaltfläche speichern Sie in der
Variablen $tdfunc1. Beim Aufbau der Tabellenstruktur haben Sie bereits gesehen, dass eine Möglichkeit erforderlich ist, die Module der Templates zu
konfigurieren. Hierzu speichern Sie in der Variablen $tdfunc2 den Rückgabewert der Methode entry_option_template(). Diese Funktion erstellt die
erforderliche Schaltfläche und die entsprechende Verlinkung. Wie beim Aufruf
der Bearbeitungsmaske benötigen Sie hierbei nur den Ident-Wert $row["id"]
des Datensatzes als Parameter.
Die Template-Verwaltung
317
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Außerdem sollten Sie eine Funktion zum Löschen eines Templates nicht vergessen. Den Rückgabewert für die dazugehörige Listenschaltfläche und Verlinkung legen Sie daher in der Variablen $tdfunc3 ab. Hierzu ist die Angabe
der ID, der zugehörigen Datenbanktabelle, des Rücksprungverzeichnisses und
der zu öffnenden Datei erforderlich.
Sie sollten zudem bedenken, dass Sie beim Aufbau der Datenbank festgelegt
haben, dass ein Template entweder freigeschaltet oder gesperrt ist. Um den Status eines Templates zu ändern, benötigen Sie eine weitere entsprechende
Listenschaltfläche, die Sie durch den Aufruf einer Methode erstellen. Den
Rückgabewert speichern Sie dann in der Variablen $tdfunc4. Auch hier benötigen Sie die Angabe der ID, der zugehörigen Datenbanktabelle, des Rücksprungverzeichnisses und der zu öffnenden Datei. Da der Benutzer auf einen
Blick erkennen soll, welchen Status ein Template hat, müssen Sie in der
Anzeige des Templates die Formatierung entsprechend anpassen. Die Formatierung des Templates speichern Sie in der Variablen $tdclass.
if (mysql_num_rows($res)!=0)
{
..
while ($row = mysql_fetch_array($res))
{
$buttons = new listenbutton;
$tdfunc1 = $buttons->entry_edit($row["id"]);
$tdfunc2 = $buttons->entry_option_template($row["id"]);
$tdfunc3 = $buttons->entry_delete($row["id"], $stable,
$spfad, $row["titel"], "__datatemplate_delete.php");
$tdfunc4 = $buttons->entry_onoffline_button($row["publik"],
$row["id"], $stable, $spath, $row["titel"],
"__datacontent_lock");
$tdclass = $buttons->entry_onoffline_text($row["publik"]);
Listing 6.32 Aufruf der Methoden zur Darstellung der Listenschaltfläche
An dieser Stelle haben Sie nun alle Vorbereitungen getroffen, um einen Datensatz anzuzeigen. Diese Anzeige nehmen Sie sehr leicht mit einigen echoAnweisungen vor.
In dem Beispielsystem werden der Name des Templates sowie das Datum der
Erstellung und der letzten Änderung angezeigt.
318
Seitenlayouts, Templates und Module
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
echo ("<tr ".$jstrover.">");
echo ("<td width=367 height=20 class=table_cell_right_bottom>
&nbsp;");
echo ("<a href=data_edit.php".$anhang."&action=edit&id="
.$row["id"]." target=funktion onClick=dateiload(’head_save.php"
.$anhang."’) class=".$tdclass.">");
echo $row["titel"];
echo ("</a></td>");
echo ("<td width=80 height=20 class=table_cell_right_bottom
align=center >".$row["date_new"]."</td>");
echo ("<td width=80 height=20 class=table_cell_right_bottom
align=center>".$row["date_edit"]."</td>");
echo ("<td width=87 height=20 class=table_cell_bottom>"
.$tdfunc1.$tdfunc2.$tdfunc3.$tdfunc4."</td>");
echo ("</tr>");
3
4
5
6
7
8
9
Listing 6.33 Anzeige der Template-Übersicht
Im Content-Bereich sehen Sie nun alle vorhandenen Templates und die zugehörigen Listenschaltflächen.
Abbildung 6.9 Übersicht der vorhandenen Templates
Bevor Sie sich nun den zwei Hauptfunktionen der Template-Verwaltung widmen, sollten Sie noch die weiteren beiden Grundfunktionen erarbeiten. Wenden Sie sich dabei zuerst einmal der einfacheren von beiden, dem Freischalten
und Sperren von Templates zu.
In der Übersicht haben Sie dem Benutzer die Möglichkeit eingeräumt, durch
Auswahl der Listenschaltfläche Eintrag freischalten/sperren den Status eines
Templates zu bearbeiten.
Die Template-Verwaltung
319
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Abbildung 6.10 Schaltfläche zum Freischalten oder Sperren eines Templates
Beim Aufruf der Funktionen für Listenschaltflächen haben Sie bereits festgelegt, welche Datei in einem Popup-Fenster geladen werden soll: die Datei
__datacontent_lock.php. Diese Datei sollten Sie auch wieder im Verzeichnis
includes ablegen.
In diese Datei binden Sie zunächst wieder die externen Dateien ein.
require("__include_databasefunction.php ");
require("__design_layoutbox_warning.php");
Listing 6.34 Einbinden der erforderlichen Include-Dateien
Aus dem Array $_REQUEST lesen wieder die Übergabeparameter aus und speichern diese in den Variablen $anhang und $action. In dem Array $text[]
speichern Sie die entsprechenden Meldungen, die der Benutzer erhalten kann.
Die angezeigte Meldung ist abhängig vom aktuellen Status des Templates. Ist
die Variable $aktion mit dem Wert upate belegt, soll die Funktion zum Sperren oder Freischalten eines Eintrags aufgerufen werden, anderenfalls wird in
dem Fenster die Seite aufgebaut.
$anhang = "?sid=".$_REQUEST["sid"];
$action = $_REQUEST["action"];
$text[0] = "Eintrag sperren";
$text[1] = "Eintrag freischalten";
if ($action=="update") {
update_data();
}
$designpage = new popup_layout;
$designpage->pagestart();
$designpage->boxhead($text[$_GET["status"]]);
content_data();
$designpage->boxdown();
$designpage->pageend();
Listing 6.35 Parameterabfrage und Aufbau der Seite mit den Methoden der Klasse popup_layout
Der weitere Ablauf ist Ihnen hinlänglich bekannt. In der Funktion content_
data() zeigen Sie dem Benutzer den ausgewählten Eintrag an, verbunden mit
320
Seitenlayouts, Templates und Module
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
der Frage, ob der Eintrag gesperrt oder freigeschaltet werden soll. Für das
Arbeiten mit dem Popup-Fenster benötigt der Benutzer wieder zwei Schaltflächen, wobei er mit der einen den Vorgang abbrechen und mit der anderen
den Vorgang bestätigen kann.
3
4
Den Hyperlink zur Bestätigung des Vorgangs müssen Sie wieder um die
erforderlichen
Parameter
$_GET["tmp_table"],
$_GET["id"],
$_
GET["path"] und $_GET["status"] ergänzen, welche Sie erneut über das
Array $_GET[ ] auslesen. Der Hyperlink verweist auf die eigene Datei.
5
6
function content_data()
{
global $anhang;
...
echo $_GET["title"];
...
a href="__datacontent_lock.php<?echo $anhang?>&id=<?echo
$_GET["id"];?>&action=update&tmptable=<?echo $_GET["tmptable"]?>
&pfad=<?echo $_GET["path"]?>&status=<? echo $_GET["status"]?>">
...
<a href="javascript:window.close()" class="linkdelete">
...
}
7
8
9
Listing 6.36 Aufbau der Seite zum Bestätigen der Statusänderung
Entsprechend dem Status eines Eintrags sieht der Benutzer eines der folgenden
Popups auf dem Bildschirm.
Abbildung 6.11 Popup-Fenster zur Statusänderung eines Templates
Nachdem ein Benutzer den Hyperlink zum Sperren oder Freischalten eines Eintrags bestätigt hat, werden aus den Arrays $_REQUEST und $_GET die Parameter
ausgelesen. Da die Variable $action mit dem Wert update belegt ist, müssen
Sie die Funktion update_data() aufrufen. In dieser Funktion aktualisieren Sie
mit einer SQL-Anweisung das Datenfeld publik des ausgewählten Datensatzes
Die Template-Verwaltung
321
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
mit dem Wert der Variablen $_GET[»status«]. Soll ein Datensatz gesperrt
werden, müssen Sie hier den Wert 0 eintragen, anderenfalls ist der Wert 1
erforderlich.
$sql = "UPDATE ".$_GET["tmptable"]." SET publik= "
.$_GET["status"]." WHERE userid=".$_GET["id"];
send_sql($db,$sql);
Listing 6.37 SQL-Abfrage zum Sperren oder Freischalten eines Templates
Nachdem Sie die SQL-Anweisung an die Datenbank gesendet haben, müssen
Sie mit einer JavaScript-Funktion das geöffnete Fenster schließen und die Übersichtsseite aktualisieren.
<script language="javascript">
opener.location = "../<?echo $_GET["path"];?>/
data_list.php<?echo $anhang?>";
window.close();
</script>
Listing 6.38 Schließen des Bearbeitungsfensters und Aktualisieren der Listenübersicht
Beim Testen der neuen Funktionalität können Sie in der Listenübersicht sehen,
dass gesperrte Einträge kursiv und freigeschaltete Einträge standardmäßig
angezeigt werden. Entsprechend dem Status eines Eintrags wird auch die jeweilige Listenschaltfläche angezeigt.
Als letzte der oben genannten Grundfunktionen sollten Sie das Löschen von
Templates aus der Datenbank betrachten. Über die Listenschaltfläche Eintrag
löschen kann ein Benutzer das zugehörige Bearbeitungsfenster öffnen.
Abbildung 6.12 Listenschaltfläche zum Löschen eines Templates
Ähnlich wie beim Löschvorgang eines Moduls müssen Sie auch beim Löschvorgang eines Templates darauf achten, dass das Template an keiner Stelle innerhalb des Systems verwendet wird. Ein Template kann allein an zwei Stellen
innerhalb des Systems verwendet werden. Zum einen kann es einem Navigationspunkt zugeordnet sein, und zum anderen kann es als Standard-Template
festgelegt sein. Daher müssen Sie diese beiden Umstände überprüfen, bevor
Sie ein Template zum Löschen freigeben.
322
Seitenlayouts, Templates und Module
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
Über die Listenschaltfläche öffnet der Benutzer die Datei __datatemplate_
delete.php in einem Popup-Fenster. Am Anfang der Datei binden Sie die allgemeinen Dateien über require-Anweisungen ein.
3
4
require("__include_databasefunction.php ");
require("__design_layoutbox_warning.php");
5
Listing 6.39 Einbinden der erforderlichen Include-Dateien
6
Die Variable $aktion bestimmt wieder den weiteren Ablauf innerhalb der
Datei.
7
$anhang = "?sid=".$_REQUEST["sid"];
$action = $_REQUEST["action"];
if ($action=="delete") {
delete_data();
}
8
9
$designpage = new popup_layout;
$designpage->pagestart();
$designpage->boxhead("Eintrag löschen");
content_data();
$designpage->boxdown();
$designpage->pageend();
Listing 6.40 Parameterabfrage und Aufbau der Seite mit den Methoden der Klasse
popup_layout
Bevor Sie dem Benutzer die Schaltfläche zur Bestätigung des Löschvorgangs
anzeigen können, müssen Sie überprüfen, ob das ausgewählte Template entweder einem Navigationspunkt zugeordnet ist oder als Standard-Template definiert ist. Hierzu müssen Sie in dem ersten Fall das Feld templateid der Tabelle
tblcms_navigation überprüfen und im zweiten das Feld standard der
Tabelle tblcms_templates. Liefert eine der beiden oder liefern beide Abfrage
ein Ergebnis zurück, speichern Sie in der Variablen $errordeletedec eine
Fehlerbeschreibung.
$errordeletedesc="";
$sql = "SELECT id from tblcms_navigation WHERE templateid="
.$_GET["id"];
$res=send_sql($db,$sql);
if (mysql_num_rows($res)!=0) {
$errordeletedesc = "Template einem Navigationspunkt zugeordnet
ist.";
Die Template-Verwaltung
323
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
}
$sql = "SELECT standard from tblcms_templates WHERE
id=".$_GET["id"];
$res=send_sql($db,$sql);
if (mysql_num_rows($res)!=0)
{
$data = mysql_fetch_array($res);
if ($data["standard"]==1) {
$errordeletedesc = "Template als Standardtemplate definiert
ist.";
}
Listing 6.41 Aufbau der Seite zum Bestätigen der Löschaktion
Abhängig von der Überprüfung des Templates kann der Benutzer an dieser
Stelle drei Varianten des Bearbeitungsfensters angezeigt bekommen. Die ersten
beiden Varianten teilen dem Benutzer mit, dass das Template nicht gelöscht
werden kann. In dem Fenster erhält der Benutzer eine genaue Beschreibung,
warum der Löschvorgang nicht genehmigt wird (siehe Abbildung 6.13).
Abbildung 6.13 Varianten des Bearbeitungsfensters bei abgelehntem Löschvorgang
Die dritte Variante des Bearbeitungsfensters zeigt die bekannte Maske mit den
zwei Bestätigungsschaltflächen (siehe Abbildung 6.14).
Abbildung 6.14 Bearbeitungsfenster bei erlaubtem Löschvorgang
Der Hyperlink für die Bestätigungsschaltfläche muss wieder um die Variablen
$_GET["tmp_table"], $_GET["id"] und $_GET["path"] erweitert werden.
324
Seitenlayouts, Templates und Module
1
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
2
function delete_verify()
{
global $anhang;
if (!empty($errordeletedesc))
{
..
echo $errordeletedesc
..
}
3
4
5
6
7
else
{
echo $_GET["title"];
..
a href="__datatemplate_delete.php<?echo $anhang?>&id=<?echo
$_GET["id"];?>&action=delete&tmptable=<?echo
$_GET["tmptable"];?>&path=<?echo $_GET["path"];?>">
..
<a href="javascript:window.close()" class="linkdelete">
}
..
}
8
9
Listing 6.42 Aufbau der Seite zum Bestätigen der Löschaktion
Bei der Auswahl der Bestätigungsschaltfläche wird die Datei __datatemplate_
delete.php erneut aufgerufen. Diesmal wird jedoch die Funktion data_
delete() ausgeführt, da die Variable $aktion mit dem Wert delete belegt ist.
Diese Funktion löscht das Template mit einer SQL-Anweisung aus der Datenbank.
Nachdem die SQL-Anweisung ausgeführt wurde, müssen Sie das Fenster automatisch schließen und die Übersichtsseite aktualisieren.
function delete_data()
{
global $anhang;
$sql = "DELETE FROM ".$_GET["tmptable"]." WHERE id="
.$_GET["id"];
send_sql($db,$sql);
?>
Die Template-Verwaltung
325
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
<script language="javascript">
opener.location = "../<?echo $_GET["pfad"];?>/
data_list.php<?echo $anhang?>";
window.close();
</script>
<?
}
?>
Listing 6.43 Löschen des Datenbankeintrags, Schließen des Bearbeitungsfensters und Aktualisieren der Listenübersicht
Die Grundfunktionen der Template-Verwaltung haben Sie nun erarbeitet.
Bevor Sie jedoch Templates löschen oder freigeben können, müssen Sie diese
erst einmal in dem System erstellen.
6.2.3
Anlegen neuer Templates
Für den Aufbau einer Website benötigen Sie – selbst wenn Ihre Website nur
aus einer einzigen Seite bestehen sollte – mindestens ein Template. Um ein
Template anzulegen, müssen Sie im Aktionsbereich die Schaltfläche Neuer Eintrag wählen. Daraufhin wird im Content-Bereich die Datei data_edit.php
geladen, die eine Eingabemaske für ein neues Template anzeigt.
Der Grundaufbau dieser Datei wird für Sie wieder einfach sein. Doch sollten
Sie ein größeres Augenmerk darauf legen, wie die Eingabemaske bereitgestellt
wird. Vor allem dann, wenn Sie Ihr System um weitere CMS-Boxen erweitern
möchten. In der Version des Beispielsystems sind zehn CMS-Boxen möglich.
Sie können jedoch durch Änderungen der Datenbanktabelle tblcms_
templates und Anpassungen der Datei data_edit.php diese Zahl jederzeit an
Ihre Bedürfnisse anpassen.
Im ersten Schritt binden Sie wieder die externen Dateien mit require-Anweisungen ein.
require("../includes/__include_userfunctions.php");
require("../includes/__include_databasefunction.php ");
require("../includes/__design_layoutbox_obeflaeche.php");
require("../includes/__include_templates.php");
logged_user();
Listing 6.44 Einbinden der Dateien für die Datenbank, die Oberfläche, die Listenschaltflächen
sowie die spezifischen Funktionen der Modulverwaltung
326
Seitenlayouts, Templates und Module
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Index
A
Aktionsschaltflächen 82
Abbrechen 83
Neuer Eintrag 83
Neuer Ordner 84
Speichern Freischaltung 83
Speichern Standard 83
Anlegen von neuen Benutzern 107
Artikelverwaltung 21, 357, 390
Artikel 357
Artikel anlegen 373
Artikel bearbeiten 373
Artikel freischalten 380
Artikel sortieren 380
Artikel sperren 380
Artikel-Bildschirm 386
Artikelinhalte bearbeiten 385
Artikelübersicht 367
Aufbau 357
Aufbau eines Artikels 360
Aufgaben 358
Aufruf Modul-Dateien 389
Auswertung CMS-Boxen 388
Bearbeitungsmaske Bilderlinks 415
Bearbeitungsmaske Bildunterschrift
403
Bearbeitungsmaske Datei 403
Bearbeitungsmaske Grafik 413
Bearbeitungsmaske Texte 408
Bearbeitungsmaske Überschrift 403
Bearbeitungsmasken 403
CMS-Box 360, 387
Datei __datacontent_delete.php
382
Datei __datacontent_lock.php 382
Datei __include_artikel.php 368
Datei data_edit.php 385
Datei data_edit_art.add.php 373
Datei data_edit_art_bild.php 413
Datei data_edit_art_bildlink.php
415
Datei data_edit_art_headline.php
403
Datei data_edit_art_text.php 408
Datei data_list.php 367
Funktion bildlink() 414, 420
Funktion cleansort() 378
Funktion dokumentenlink() 418
Funktion edit_content() 407
Funktion edit_entry() 376
Funktion insert_new_content() 407
Funktion linkintern() 418
Funktion loadentrylist() 370
Funktion sitelink() 417
Funktion sortup() 380
insert_new_entry() 376
Modul-Datei 388, 403
Modul-Datei Bildergalerie 396
Modul-Datei Grafik 393
Module-Datei Inlcude-Datei 401
Template 357
B
Backend 19
Backend-Erweiterungen
Gruppenverwaltung 474
Navigationszweige verschieben 475
Rechteverwaltung 474
Standard-Module 475
Thumbnails 475
Verzeichnisstruktur 474
WYSIWYG-Editor 476
zeitgesteuerte Veröffentlichung 475
Baumstruktur 213
Bearbeiten von Benutzereinträgen 107
Benutzer 22
Benutzeroberfläche 33
Aktionsbereich 35
Contentbereich 35
Design 33
Feintuning 91
Frame funktion 37
Frame headline 37
Frame navprim 37
Frame subnav 37
JavaScript-Funktionen 91
Primärbereich 35
Sekundärbereich 35
Struktur 35
Styles der Listendarstellung 91
Index
481
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Benutzerübersicht 101
Benutzer bearbeiten 105
Benutzer freischalten 105
Benutzer löschen 105
Benutzer sperren 105
Formatierung eines Eintrages 106
Listendarstellung 103
Benutzerverwaltung 20, 97
Anlegen von neuen Benutzern 97
Aufgaben 97
Bearbeiten von Benutzerdaten 97
Benutzer freischalten 118
Benutzer löschen 118
Benutzer sperren 118
Benutzername 113
Datei __datauser_delete.php 119
Datei __include_userfunctions.php
128
Datei data_edit.php 100
Datei data_list.php 100
Datei head_add.php 100
Datei head_save.php 100
Datei__datauser_lock.php 122
E-Mail-Adresse 113
Freischalten und Sperren von
Benutzern 98
Funktion data_delete() 121
Funktion edit_entry() 101
Funktion insert_data() 114
Funktion insert_new_entry() 101
Funktion loadentrylist() 101
Funktion send_email() 117
Löschen von Benutzern 98
Passwort 113
Verbindungstimeout 113
Benutzerverwaltung__include_
intuser.php 100
Bilder- und Dokumentenverwaltung
151
Anlegen von Ordnern 205
Bild-Datei 192
Datei __datafile_delete.php 180, 201
Datei __include_upload_scripts.php
180
Datei data_edit.php 180, 187
Datei data_folder.php 181
Datei data_list.php 180
Datei-Arbeitstitel 192
482
Index
delete_data() 203
Dokumente und Bilder anlegen 187
Dokumente und Bilder löschen 200
Dokumentenübersicht 181
Funktion content_data() 184, 207
Funktion edit_entry_document()
195
Funktion edit_entry_picture 195
Funktion folderpfad() 190
Funktion foldertitel() 183
Funktion insert_data() 195, 207
Funktion insert_new_entry_
document() 195
Funktion insert_new_entry_
picture() 195
Funktion loadentrylist() 184
Funktionen der Bilderverwaltung
152
Funktionen der Dokumentenverwaltung 153
Funktionsübersicht 180
getimagesize 197
unlink() 204
Upload 197
C
CMS-Boxen 287
D
Dateien der Backend-Navigation
__include_nav_cms.php 45
nav_prim.php 44
Dateien der Benutzeroberfläche
adminstart.php 37
Dateien der Sekundärnavigation
__include_nav_cms.php 57
subnav.php 57
Datenbankanbindung 38
$objConn 41
__include_databasefunction.php 38
connect() 39
mysql_query 40
mysql_select_db 39
Parameter 38
PHP 5 41
select_db 41
Verbindungskennung 40
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Datenbanken
MS Access 13
MySQL 13
SQLite 13
Datenbanktabellen
tblcms_artikel 360, 366
tblcms_artikel_content 361, 366
tblcms_bilder 154
tblcms_dokumente 155
tblcms_folder 156
tblcms_module 293
tblcms_navigation 217, 220
tblcms_template_standard 241
tblcms_templates 311, 312
tblcms_templates_config 311, 314
tblvw_intuser 99
tblvw_navigation 43
tblvw_system 144
Dokumenten- und Bilderverwaltung
20
F
Feinkonzept 19
Artikelverwaltung 28
Benutzerverwaltung 21
Bilder- und Dokumentenverwaltung
23
Modul 26
Navigationsverwaltung 24
Ordnerverwaltung 24
Template 26
Template-Engine 29
Templates und Module 26
Funktionsleisten 82
Artikelverwaltung 89
head_add.php 85
head_save.php 87
G
Grobkonzept 19, 21
H
Hauptnavigationsbaum 215
Hinweisfenster 81
Abbrechen 82
Bestätigen 81
I
Installation 14
Dateien 14
Datenbank 15
Konfigurationsdateien 15
Webserver 15
K
Klassen & Methoden
entry_delete() 70
entry_edit() 69
entry_new_naventry() 76
entry_onoffline_button() 73
entry_onoffline_text() 73
entry_option_naventry() 79
entry_rename() 78
entry_sort() 80
pageend() 127
pagestart() 127
popup_layout 119
Konzeption
Lastenheft 19
Pflichtenheft 19
L
Listenschaltflächen 68
Eintrag bearbeiten 69
Eintrag freischalten 72
Eintrag löschen 70
Eintrag sperren 72
Navigationselement umbenennen
77
Navigationselement umsortieren 79
Navigationselement-Optionen 78
Neues Navigationselement 76
Login 126
Fehlerhaftes Passwort 133
Fehlermeldung 127
Fehlerstatus 128
Formularfelder 128
Funktion check_user() 129
Funktion errorlogin_user() 132
Loginmaske 126
Loginversuch 127
Unbekannter Benutzername 133
Loginmaske 22
Login 22
Logout 23
Index
483
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
M
Modul-Datei Artikeltext 390
Modul-Verwaltung 288
Aufbau 292
Aufgaben 288
Auswahl von Modul-Dateien 301
Datei __datamodul_delete.php 294,
307
Datei __include_templates.php 294
Datei data_editphp 293
Datei data_list.php 293
Datenfeld Ausgabedateie 302
Datenfeld Bezeichnung 302
Datenfeld Eingabedatei 302
Funktion edit_entry_modul() 294,
303
Funktion insert_new_entry_modul()
294, 303
Funktion loadentrylistmodule() 294
Modul bearbeiten 298
Modul-Datei Artikel 289
Modul-Datei Artikelliste 290
Modul-Datei Bildergaleriel 290
Modul-Datei Grafik 290
Modul-Datei Navigation 290
Modul-Datei Primärnavigation 291
Modul-Datei Sekundärnavigationl
291
Module anlegen 298
Module löschen 306
Modul-Übersicht 294
Standard-Module 289
Upload Modul-Dateien 304
MySQL 13
N
Navigation 20, 213
Aufbaulogik 217
einstufige Navigation 26, 269, 270
Elemente 213
Funktion load_navpoints() 275
Funktion loadnavigation() 274
geteilte Navigation 26, 269, 280
Navigationsbaum 214, 217
Navigationselement 216
Navigationselement einrücken 272
Navigationspunkt markieren 273
Navigationspunkt, aktiv 273
484
Index
Navigationspunkt, inaktiv 273
Navigationszweig 215
Struktur 213
Webseite 269
Navigationsbaum 65, 214
Navigationselement 24, 65, 215
Positionierung 219
Navigationsstruktur 213
Navigationsverwaltung 222
Anlegen von Navigationsbäumen()
233
Anlegen von Navigationselementen() 233
Aufgaben 222
Datei __data_nav_unlock.php 224
Datei __datanav_delete.php 224,
252
Datei __datanav_lock.php 248
Datei __include_navigation.php 225
Datei data_edit.php 224, 234
Datei data_list.php 224, 225
Datei data_rename.php 224, 243
Datenfeld Beschriftung 237
Funktion cleansort() 225, 238
Funktion insert_new_naventry()
226, 238
Funktion loadnavigation() 225, 229
Funktion loadnavigationtrees() 225,
227
Funktion pagerefer() 226
Funktion rename_naventry() 226,
247
Funktion sortup() 225, 257
Navigationelement löschen 252
Navigationselement freischalten
248
Navigationselement sperren 248
Navigationselement umbenennen
243
Navigationselemente sortieren 257
Navigationslement-Eigenschaften
260
Navigationsübersicht 225
Seitenweiterleitung 265
Standard-Template() 241
Startseite 263
strukturierte Navigationsübersicht
233
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Template-Zuweisung 264
Navigationszweig 215
Positionierung 219
Nebennavigationsbaum 215
O
Ordnerverwaltung 24, 157
Datei __datafolder_delete.php 174
Datei data_edit.php 164
Datei data_list.php 158
Funktion content_data() 159, 166
Funktion edit_entry() 169
Funktion folders() 168
Funktion insert_data() 169
Funktion insert_new_entry() 169
Funktion loadentrylist() 159
Ordner anlegen 163
Ordner bearbeiten 163
Ordner löschen 173
Ordner-Pfad 169
Ordner-Titel 169
Ordner-Typ 169
Ordnerübersicht 158
P
Persönliche Benutzereinstellungen 136
Passwort 137
Timeout 137
PHP 4 13
PHP 5 13
phpMyAdmin 33, 44, 217
Platzhalter 425
Primärnavigation 43
Administration 43
Artikel 42
File-Upload 43
Navigation 42
Templates 43
Projekt 19
S
Seitenlayout 26, 287, 351, 425
Aufbau 351
Aufruf CMS-Box 353
CMS-Box 352, 425
Funktion cmsbox() 353, 354, 428
Gestaltung 425
Platzhalter 352, 425
Sekundärnavigation 54
Navigationsliste 55, 65
Ordnerliste 55, 63
reine Sekundärnavigation 59
Sekundärnavigation mit XML 61
Sekundärnavigtion
reine Sekundärnavigation 54
Session-Management 131
Funktion exit_user() 135
Funktion logged_user() 134
Funktion login_user() 131
Session-Daten 131
SimpleXML 53
Standard-Template 241
Systemeinstellungen 144
Verzeichnis Backend 147
Verzeichnis Frontend 147
T
Template 287
Platzhalter 287
Template- und Modulverwaltung 21
Template-Engine 21, 287, 433
CMS-Box 436
CMS-Box Auswertung 436
Datei __modul_engine.php 436,
464
Datei modul_navigation.php 467
Datei modul_navigation_prim.php
467
Datei modul_navigation_sek.php
464
Funktion cmsbox() 436
Funktion load_navpoints() 464
Funktion loadnavigation() 443, 465
Funktion loadnavigation_prim() 464
Funktion loadseknavigation() 467
Inhaltsanzeige 439
Modul-Datei Artikel 438, 447
Modul-Datei Artikelliste 458
Modul-Datei Bildergaleire 454
Modul-Datei Einstufige Navigation
443
Modul-Datei Grafik 440
Modul-Datei Include-Datei 451, 452
Modul-Datei Primär-Navigation
446
Modul-Datei Zusatz-Navigation 446
Index
485
Leseprobe - Web Content Management mit PHP und MySQL - www.galileocomputing.de
Modul-Dateien 437
Parameter 434
Parameter pageid 434
Platzhalter 436
Seitenweiterleitung 435
Startseite 435
Template-Bestimmung 434
Template-Verwaltung 310
Aufgaben 315
CMS-Boxen 326
CMS-Boxen Konfiguration 336
Datei __datacontent_lock.php 320
Datei __datatemplate_delete.php()
323
Datei data_edit.php 326
Datei data_list.php 315
Datei data_list_option.php 337
Datei data_option_edit_artikelliste.php 342
Datei data_option_edit_navigation.php 342
Datei data_templatestandard.php
348
Datenbankaufbau 311
Funktion edit_entry_template() 332
Funktion insert_new_entry_
template() 332
Funktion insert_template_config_
artikel() 344
Funktion insert_template_config_
navigation() 346
Funktion load_module() 331
Funktion loadentrylisttemplateconfig() 337
Funktion loadentrylisttemplates()
316
Funktion update_template_config_
artikel() 344
Funktion update_template_config_
navigation() 346
Konfiguration Artikelliste 342
486
Index
Konfiguration Navigation 345
Konfigurationsübersicht 336
Module 310
Standard-Template 348
Template anlegen 326
Template freischalten 319
Template löschen 322
Template sperren 319
Template-Übersicht 319
V
Vorlagendatei 287, 425
W
Webseitenaufbau 430
Anlegen mehrerer Artikel 447
Erweiterungen 447
geteilte Navigation 463
Grafiken 433
Hauptnavigation 431
Konfiguration Artikelliste 458
Konfiguration Hauptnavigation 432
Konfiguration Zusatznavigation 432
Modul Include-Datei 451
Seitenweiterleitung 432
Standard-Template 431
Template 430
Vorbereitungen 430
Zusatznavigation 431
Webserver
Apache 13
Internet Information Server 13
X
XML 52, 61
$objNavigation 53
Knoten 53
navigation.xml 53
SimpleXML 53
XML-Datei 52
XML-Objekt 61