myPHPcms | Anleitung
Jetzt wird es historisch. Meine erste Webseite ab 1994 war aus purem handgestrickten HTML. Als meine Frau 2007 verstarb, hatte ich auf einmal das Bedürfnis, ein öffentliches Tagebuch zu führen. Ein Blog musste her. Weil mir WordPress ne Nummer zu groß war, hab ich mir mein eigenes spartanisches flatfile CMS entworfen. So sah das aus:
Einführung
Der Begriff Content-Management System ist vielleicht etwas übertrieben. Aber das, was im Untergrund meiner Web-Präsenz werkelt, kommt dem schon sehr nahe. Mein CMS versucht so einiges zu automatisieren, aber nicht alles.
Es entsteht aus dem Wunsch die volle Kontrolle, Freiheit und Flexibilität über Inhalt, Layout, und Engine zu haben. Eigentlich hab ich ja gar keine Zeit für so etwas, aber irgendwie kann ich nicht anders als das Rad nochmal zu erfinden. Mein CMS hat derzeit noch kein Web Interface für die Datenpflege/Administration. Die erfolgt quasi “hintenrum”, so wie du auch deine herkömmliche Webpräsenz pflegst: Lokal ändern, und dann via ftp auf den Server laden. Teile davon, das Comment-Modul (Comments, Gästebuch, und Weblog) lassen sich auch heute schon übers Web administrieren. Eine vollständige online Administration werde ich am Ende auch noch einbauen. Mein CMS wendet sich also derzeit eher an erfahrene Webworker, die meine kleine Skriptsammlung unter Beachtung der GPL nach Herzenslust verwenden, oder weiter verwursten dürfen. Viel Spaß damit :-)
Features
CMS-Systeme gibt es wie Sand am Meer, waren mir aber zu groß oder/und zu unflexibel. Da habe ich mir kurzerhand mein eigenes zusammen gestellt. Dabei waren mir folgende Anforderungen wichtig:
- Einfach in der Anwendung, ohne zusätzliche Programmierung einsetzbar.
- Mehrsprachigkeit, mit automatischer und manueller Umschaltung.
- Freie Gestaltung der Seiten
- Freundlich zu Suchmaschinen
- Trennung von Code und Content, ohne Template Engine
- Keine SQL Datenbank nötig !!!
- Da ich nicht das Rad neu erfinden will, sollte sich das CMS mit Fremd-Skripten verstehen.
- Globale Script und CSS Dateien. Für jede Webseite kann aber bei Bedarf automatisch spezieller Script-Code und CSS-Style Infos nachgeladen werden.
Folgende Module sollen hinzuladbar sein:
- RSS-Feeds, filterbar, jahresbezogen, mit Archiv
- Fotoalbum
- Gästebuch, incl. Spamschutz
- Blog, mit Kommentarfunktion, und was so dazugehört, incl. Spamschutz
- Forum, evtl.
- Mail-Formular, incl. Spamschutz
- Kommentar Funktion für einzelne Seiten, incl. Spamschutz
- Download-Manager, mit Statistik für Dateizugriffe
- Statistik-Modul für Seitenzugriffe
- Verwalten von Linklisten
- Spamschutz-Modul
- Paging Modul, um umfangreiche Inhalte auf mehrere Seiten zu verteilen.
- Design-Umschalter, der nicht nur (aber auch) CSS-Stylesheets umschaltet, sondern das gesamte Layout einer Präsentation
Das CMS installieren
Das gezippte Archiv einfach hier runterladen, und in das Webverzeichnis des Webservers entpacken.
Ein paar Voraussetzungen
- Apache - Ja
- Minimum Web Space - 4 Mb
- PHP Version - 4.3.3 or höher
- GD 2 - Enabled
- SendMail - Enabled
- Session Support - Enabled
- domxml - Enabled
Idealerweise sind Short-Tags zugelassen: <?= … ?>
statt <?php … ?>
. Ich mache reichlich Verwendung davon. Wenn nicht, musst du mit Suchen und Ersetzen durch die Scripte gehen. Das Parsen von HTML Dateien sollte aktiviert werden. Das erreichst Du indem Du folgende Zeilen in die .htaccess Datei im Root verzeichnis anlegst, oder ergänzt:
Falls Du das CMS nicht im Webroot Verzeichnis, sondern in einem Unterverzeichnis (zum Beispiel test/) installieren willst, musst Du dieses Verzeichnis in der Datei includes/global.config.php angeben: $cmsP[“install-directory”] = “test/”;
Jetzt kannst Du das CMS das erste mal über die url aufrufen:
Schnellstart
Wenn Du das CMS installiert hast, müsstest Du folgenden Startbildschirm sehen:
Als erstes solltest du jetzt hier -> Benutzer verwalten das Administrator Passwort ändern. Was Du sehen müsstest ist eine Seite mit nur einem Bereich, dessen Menü ausgeblendet ist, und dem Inhaltsverzeichnis des Bereiches auf der rechten Seite. Der Name des Bereichs ist index. Er hat drei Seiten: willkommen, weblog, und gästebuch:
Label[de] | Dateiname |
---|---|
willkommen | index.html |
weblog | index.weblog.html |
gästebuch | index.gbook.html |
Es ist ein Designset vorhanden: tasteofspring
. Als Sprachen stehen deutsch und englisch zur Verfügung.
Seite zu einem Bereich hinzufügen
Dazu sind drei Schritte notwendig.
- Einen mehrsprachigen Menüeintrag erzeugen
- Den Seiteninhalt mindestens in der Standardsprache bereitstellen.
- Die Einstiegsseite als Fassade anlegen
Schritt 1: Menüeinträge anlegen
Um dem Bereich eine neue Seite hinzuzufügen, wechselst du in das Verzeichnis ressourcen/menues das die Inhaltsverzeichnisse aller Bereiche, in alles Sprachen enthält. Zu dem Admin-Menü kommen wir später. Es gibt nur einen Bereich, und der heißt index. Das Inhaltsverzeichnis für den Bereich index steckt in den Dateien
Dateiname | Sprache |
---|---|
index.menue.de.xml | Deutsch |
index.menue.en.xml | Englisch |
Der Inhalt der beiden Dateien sieht wie folgt aus:
index.menue.de.xml
index.menue.en.xml
Das Attribut key enthält den Schlüssel. Das CMS ergänzt am Ende den Suffix .html um den Namen der HTML-Datei zu ermitteln. Füge jetzt in jeder der Dateien eine neue Zeile ein:
Aus diesen Informationen kann das CMS jetzt das Menü rendern. Jetzt fehlt uns noch der zugehörige Inhalt.
Schritt 2: Inhalte bereitstellen
Wechsle in das Verzeichnis ressourcen/
. Hier findest du die sprachabhängigen Inhalte aller Webseiten. Es muss nicht zu jeder Sprache eine Datei vorhanden sein. Nur die Datei der Default-Sprache muss vorhanden sein. Als Default ist in der Beispielanwendung DE eingestellt. Dieser Inhalt wird immer dann angezeigt, wenn Übersetzungen fehlen.
Lege eine neue Datei an:
und fülle sie mit folgendem Inhalt:
Es gibt eine weitere, zusätzliche Möglichkeit sprachabhängige Inhalte bereitzustellen: in XML-Dateien. Dazu muss eine weitere sprachabhängige Datei gemäß den Namenskonvetionen angelegt werden.
Für unser Beispiel ist das: index.test.de.xml
die mit folgendem Inhalt gefüllt wird:
Auf diese Informationen kann aus der Datei index.test.de.php
wie folgt zugegriffen werden:
Beachte den zweiten Eintrag. Er enthält einen Platzhalter, den wir nun zur Laufzeit ersetzen wollen. Dazu verwenden wir eine weitere Funktion des CMS: Die Template-Engine.
Die Webseite muss letztlich natürlich auch über den Browser aufgerufen werden können. Dazu legen wir eine Fassade an…
Schritt 3: Einstiegsseite anlegen
Wechsle in das Root-Verzeichnis der Anwendung. Hier liegen alle HTML-Dateien die über den Webbrowser aufgerufen werden. Öffne die Datei index.html. Du findest dort nur die folgende Zeile PHP-Code:
Dieser Code steht in allen diesen Dateien. Damit deine Seite über das Web erreichbar ist, musst du eine Datei mit den Namen index.test.html erzeugen, und diese Zeile Code hinein kopieren. Achte darauf, das keine Leerzeichen, oder Zeilen vor dem <?php vorkommen.
Damit bist Du fertig..
Bereich hinzufügen
Das Bereichsmenü ist in der Beispielanwendung ausgeblendet, da bisher nur ein Bereich vorhanden war. Machen wir also zunächst das Bereichmenü sichtbar. Dazu wechselst du in das Verzeichnis includes/, und öffnest die Konfigurationsdatei global.config.php des CMS. Dort scrollst du ein wenig herunter, bis du folgende Einträge findest:
Der erste Eintrag ist für die Sichtbarkeit des Bereich -Menüs zuständig. Setze den Wert auf true. Wenn Du jetzt die Startseite erneut aufrufst sollte sie so aussehen:
BILD
Oben wird ein Link mit der Bezeichnung start sichtbar. Jetzt wollen wir dieses Menü um einen Eintrag erweitern.
Schritt 1: Bereichsmenü erweitern
Wechsle in das Verzeichnis ressourcen/global. Hier findest du die sprachabhängigen Menüeinträge für die Bereiche:
- global.bereiche.de.xml
- global.bereiche.en.xml
- global.bereiche.de.xml
global.bereiche.en.xml
Die Menüeinträge erscheinen in der Reihenfolge wie sie hier notiert werden in der Webseite. Füge jetzt zwischen den Zeilen index, und admin je eine neue Zeile mit folgendem Inhalt ein:
global.bereiche.de.xml
global.bereiche.en.xml
Auch hier wird später vom CMS aus dem Key durch Anhängen der Endung .html der Dateiname gebildet: index.html, und admin.html. Der Admin Eintrag darf nicht verändert werden.
Schritt 2: Inhaltverzeichnis des Bereichs erstellen
Um dem Bereich eine neue Seite hinzuzufügen, wechselst du in das Verzeichnis ressourcen/menues das die Inhaltsverzeichnisse aller Bereiche, in alles Sprachen enthält.
Es existieren bereits Menüs für die Bereiche index, und admin. Erzeuge zwei Dateien mit folgendem Inhalt:
testbereich.menue.de.xml
testbereich.menue.en.xml
Damit ist der neue Bereich inclusive Startseite definiert. Die Index-Seite des Bereichs nennt sich testbereich.html Für diese Seite muss jetzt analog zum Kapitel Seite zu einem Bereich hinzufügen. auf Seite 7 der Inhalt und die Fassade bereitgestellt werden:
Schritt 3: Inhalt der Seite bereitstellen
Wechsle in das Verzeichnis ressourcen/. Hier findest du die sprachabhängigen Inhalte aller Webseiten. Es muss nicht zu jeder Sprache eine Datei vorhanden sein. Nur die Datei der Default-Sprache muss vorhanden sein. Als Default ist in der Beispielanwendung DE eingestellt. Dieser Inhalt wird immer angezeigt, wenn Übersetzungen fehlen. Lege eine neue Datei an:
testbereich.de.php
und fülle sie mit folgendem Inhalt:
Erstelle bei Bedarf noch eine Datei testbereich.en.php
mit der englischen Übersetzung.
Schritt 4: Einstiegsseite anlegen
Als letztes fehlt noch die Fassade, damit die Seite über das Internet aufgerufen werden kann.
Wechsle in das Root-Verzeichnis der Anwendung. Hier liegen alle HTML-Dateien die über den Webbrowser aufgerufen werden.
Erzeuge eine Datei testbereich.html
mit folgendem Inhalt:
Achte darauf, das keine Leerzeichen, oder Zeilen vor dem <?php
vorkommen. Damit bist Du fertig..
Arbeitsumgebung einrichten
Meine bevorzugte Entwicklungsumgebung ist Netbeans. Zum lokalen entwickeln und Testen der Anwendung benutze ich eine XAMPP Installation.
Verzeichnisse
Verzeichnisname | Beschreibung |
---|---|
daten | Alle Flatfile-Datenbanken |
designs | Verzeichnis für alle Designsets |
designs/tasteofspring/ | Verzeichnis des Designsets, einthält das Template |
designs/tasteofspring/images/ | Die Bilder des Designsets |
designs/tasteofspring/script/ | Java-Skripte des Designsets |
designs/tasteofspring/styles/ | CSS-Skripte des Designsets |
downloads | Enthält alle Downloads (nächste Version) |
images | Globale Grafikdateien, die von alles Designsets verwendet werden |
includes | Konfiguration |
includes/library/ | Klassenbibliothek, Module |
includes/preOutput/ | PHP Skripte die vor HTML-Ausgabe ausgeführt werden sollen |
ressourcen | Mehrsprachiger Inhalt der Webseiten |
ressourcen/global/ | Globale Ressourcen |
ressourcen/menues/ | Die Inhalte der Menüs |
ressourcen/meta/ | Header-Metadaten in allen Sprachen |
ressourcen/modules/ | Ressourcen der Klassenbibliothek (Module) |
script | Globale Skripte, die von allen Designsets verwendet werden |
styles | Globale CSS Styles, die von allen Designsets verwendet werden |
templates | Alle globalen Vorlagen für die Template-Engine |
Die Webseiten, und einige Systemskripte befinden sich im Root-Verzeichnis.
Wichtige Dateien
Es gibt natürlich einen ganzen Haufen wichtiger Dateien. Einige wichtige hab ich hier mal gelistet:
Name des Skripts | Beschreibung |
---|---|
include/global.config.php | Zentrale Konfigurationsdatei |
readme.lizenz.txt | Lizenzinformationen |
download.php | Empfängt Anforderungen für Downloads |
switchStylesets.php | Umschalter für Stylesets |
rss-feed.php | Nimmt Anfragen zur Anzeige vom RSS-Feed entgegen. |
system.download.build.cache.php | Baut den Download-Statistik Cache neu |
system.reset.php | Löscht die Session |
Das CMS Konfigurieren
Die Basiskonfiguration geschieht in der Datei include/global.config.php
:
Wie funktioniert das CMS: Internes
Über den Webbrowser wird die URL einer Webseite eingegeben. Diese HTML-Seite ist aber nur eine Fassade. Sie enthält lediglich einen Aufruf des CMS.
Namenskonvention für Webseiten im CMS
Die Webseiten liegen alle im Root Verzeichnis. Der Name einer Webseite beinhaltet Schlüsselinformationen für das CMS. Er hat zwei Ebenen, die durch einen Dezimalpunkt getrennt werden. Weitere Ebenen werden nicht berücksichtigt:
Beispiele für Webseiten:
home.html
(Seitenname = Bereich = ‘home’)home.aboutme.html
(Bereich=‘home’, Seitenname = ‘home.aboutme’)
Beispiel für Webseiten mit mehr Ebenen:
home.bilder.01.html
(Bereich = ‘home’, Seitenname = ‘home.bilder’)home.bilder.02.alpha.html
(Bereich = ‘home’, Seitenname = ‘02.alpha’)
Konventionen für PHP Variablen
Für Variablen gibt es auch eine Namenskonvention: Alle CMS Objekte, und Variablen beginnen mit dem Prefix $cms
. Einige Beispiele für Systemvariablen:
$cmsPath
- …
Benutzer verwalten
Nach der Installation des Systems sind zwei Nutzer verfügbar. Der Wichtigste ist der Administrator. Der Benutzername und Passwort ist admin. Das Passwort und ggfs. der Benutzername sollte nach der Installation sofort geändert werden. Adminrechte benötigst Du um im Gästebuch Einträge ändern, kommentieren, oder löschen zu können. Im Weblog darfst Du außerdem nur als Administrator Einträge vornehmen.
Info
Discontinued
An Anwendung entwickle ich nicht mehr weiter, da ich zu Wordpress gewechselt bin.