PHP: Eigenes CMS erstellen
Erstelle dein eigenes CMS mit unserem Tutorial. Dabei lernst du bestimmt einiges neues in Sachen Webentwicklung mit PHP. Als Ergebnis bekommst du die Basis von ContentLion, dem Open Source CMS.
Mach doch am besten selbst mit. Lies dir die Artikel durch und baue dein eigenes CMS. Durch unser Forum kannst du auch selbst Einfluss auf die aktuelle Entwicklung nehmen. Dort helfen wir dir gerne weiter, wenn mal Probleme auftreten.
Für alle die das CMS vorher einmal durchsehen möchte, hab ich ein kleines Video gedreht. Es zeigt das CMS nach dem Artikel 93. Natürlich kannst du auch die aktuelle Version des CMS kostenlos herunterladen.
Warum ein eigenes CMS?
Es gibt bereits unzählige Content-Managment-Systeme da draußen. Doch bei den großen Systemen hat man oft nicht die Chance selbst an der Entwicklung teilzuhaben. Das möchten wir anders machen. In dem CMS Tutorial haben wir bis 2011 bereits über 250 Artikel geschrieben, die die Entwicklung dokumentiert.
Wenn du die durchgearbeitet hast, hast du neben neuen Kenntnissen in PHP auch die besten Voraussetzungen, um dein Projekt so zu gestalten, wie du es gerne hättest. Wenn etwas nicht passt, kannst du mit deiner Erfahrung ein Plugin entwickeln und so das CMS nach deinen Wünschen anpassen.
Was benötige ich dafür?
Es ist leichter für dich, wenn du bereits erste Vorkenntnisse in PHP hast. Du musst aber kein Profi sein. Wenn es Probleme gibt, kannst du dich gerne bei uns melden.
Außerdem brauchst du einen Apache Webserver, PHP und eine MySQL Datenbank. Mit der Installation von XAMPP bekommst du sofort alles auf einmal. Für die Entwicklung selbst kannst du auch das Notepad verwenden. Wenn du etwas mehr Komfort möchtest, kannst du auch zu Netbeans greifen.
Artikel – Schritt für Schritt
- Eigenes CMS erstellen
- Konzeption Grundgerüst CMS
- Dateisystem des CMS
- CMS: Datenbank Einstellungen in dbsettings.php
- CMS Einstellungen in der MySQL-DB
- MySQL Verbindung aufbauen
- CMS Einstellungen auslesen
- Content auf die Seite bringen
- Sicherheit des Include-Befehls
- Schöne Urls im CMS – Mod Rewrite sei dank
- Seiten in der Datebank registrieren
- Das HTML-Grundgerüst fürs CMS
- CMS Skins registrieren
- PHP SkinController
- CMS Kernsystem in eine eigene Klasse packen
- Komplettes (X)HTML in den Skin auslagern
- Globale Meta-Tags in der DB speichern
- Lokale Meta-Daten speichern / auslesen
- Seiteneinstellungen in der Klasse Page
- PHP Breadcrumb erstellen
- Die CMS Menü Klasse
- Lokale und Globale Navigation im CMS
- XHTML Validation verbessern
- Die 4 Farben des CMS Standardskins
- Farbeinstellungen speichern und auslesen
- Websitehintergrund mit Verlauf
- Globales Menü ausrichten
- Website Container erstellen
- Content-Bereich nach rechts schieben
- Lokales Menü ein/ausblenden
- CMS Titel anzeigen
- CMS CSS-Stylesheet auslagern
- Das Login-Formular zum Admin-Bereich
- Den Admin in der DB anlegen
- Admin Passwort prüfen & User Klasse erstellen
- Login Status speichern
- Admin Menü erstellen
- Seiten im Admin-Bereich auflisten
- Icon-Verzeichnis anlegen
- Form Design für Seite bearbeiten erstellen
- Die Settings-Tabelle wird erweitert.
- Ausgeben der Einstellungsmöglichkeiten
- CSS braucht ein Admin-Bereich
- Form im Design, oder Design in Form?
- Ein paar kleine CMS Updates…
- Die CMS Menüs bekommen Namen
- Menüs im Admin-Bereich auflisten
- Menü Aktionen anlegen
- Editierbare Menüs im Admin-Bereich ausgeben
- Seitendesign Menü bearbeiten
- Einstigspunkt – Der Code & Blog Jubiläums Beitrag
- CMS: Menü Eintrag hinzufügen
- Menü-Einträge Bearbeiten Teil 1
- Menü-Einträge Bearbeiten Teil 2
- Menü Einträge löschen
- Menü auswählen im ‘Seite Bearbeiten’
- Datenbank-Daten bei ‘Seite Bearbeiten’ verwenden
- Inhalt auslesen bei ‘Seite bearbeiten’
- ‘Seite Bearbeiten’ goes WYSIWYG
- Konfigurieren von WYSIWYG
- Seite speichern Teil1
- Seite speichern Teil 2
- Neue Links für CMS!
- Neues Menü erstellen
- Bugfix: Nur ein Menü auswählen
- Bugfix: Primary Key Meta-Tags
- Neue Seite anlegen Teil 1
- Neue Seite anlegen Teil 2
- Seite löschen
- Menüs löschen
- MySQL Tabellen auflisten für leichtere Administration
- Benötigte Klassen automatisch laden
- Tabellen auflisten mit Unterseiten
- Tabellennavigation der db.php
- MySQL Spalten auslesen und anzeigen
- Einstigspunkt – Aktueller Stand Eigenes CMS
- Tabelle mit Daten befüllen
- Tabellenanzeige verschönern
- Bugfix: $dbpraefix wurde missachtet
- Aktionen & Checkbox Tabellenansicht
- Datensatz bearbeiten anzeigen
- Bugfix Tabellenansicht: Checkbox nicht Checkbar
- Validierung Datensatz bearbeiten
- Seitenwechel Tabellenansicht
- Speicherung Daten DBManager Teil 1
- Renner Bugfixes
- Sicherheitslücke in der Verzeichnisstruktur
- Speicherung Daten DBManager Teil 2
- Bugfix: Doppeltes Admin-Login
- Einstellungen speicherbar machen
- Upload-Script integrieren
- Order-Funktionalität
- Upload-Erweiterung
- Bildserver
- Admin-Bereich: Neues Menü + Dashboard
- Widget-System
- Logout + CustomCSS
- PluginInfos anzeigen
- EventManager
- Plugin (de)aktivierung (CMS)
- 100 Artikel CMS Tutorial (+Namensverkündung)
- Bugfix: Upload
- Events werfen Teil 1
- Events werfen Teil 2
- Events werfen Teil 3
- Basis des Installers
- Installer Schrittliste
- Installer mit Design
- Navigation des Installers
- Schrittfestlegung, Willkommenstext + Lizenz
- ContentLion Lizenz
- Systemcheck
- Datenbankeinstellungen
- Installer Formulare befüllen
- Website Einstellungen
- Datenbank-Einstellungen speichern
- Tabellen anlegen
- Zeilen Einfügen
- Installation entfernen
- Meta Daten erstellen Teil 1
- Meta Daten erstellen Teil 2
- Dateien löschen
- Ordner löschen
- Plugin Einstellungen
- Typisierte Einstellungen Teil 1
- Vorschaufunktion
- Typisierte Einstellungen Teil 2 + Bugfix
- ColorPicker
- MenüSelector
- SkinSelector Teil 1
- SkinSelector Teil 2
- Einstiegspunkt – Datenbankklasse Teil 1
- Datenbankklasse Teil 2
- Datenbankklasse Teil 3
- Datenbankklasse Teil 4
- Datenbankklasse Teil 5
- Datenbankklasse Teil 6
- Datenbankklasse Teil 7
- Datenbankklasse Teil 8
- Datenbankklasse Teil 9
- Datenbankklasse Teil 10
- Datenbankklasse Teil 11
- Mobile CMS
- Mobile Skinselector
- Redirect nach Admin-Login
- Ordnerfunktion bei Seiten
- Globales Menü aus Einstellungen verbannen
- Skinspezifische Einstellungen
- Submenüs Teil 1
- Submenüs Teil 2
- Einstiegspunkt – Update Installer
- Template Engine
- Benutzerübersicht
- Einstiegspunkt – Role-Tabelle + Update Installer (CMS)
- Die Role Klasse
- Seitentypen Teil 1
- Seitentypen Teil 2
- Benutzer Login
- Rollenspezifische Einstellungen auslesen
- Rollenspezifische Einstellungen Speichern Teil 1
- Rollenspezifische Einstellungen Speichern Teil 2
- Rollenspezifische Einstellungen Speichern Teil 3
- Einführung Namespaces
- Globales Menü + Bugfix in Settings
- Template Overwriting
- Zugriffsverwaltung
- Seiten-Templates
- Mehrsprachigkeit
- Icon – Klasse
- Menü Templates Teil 1
- Menü Templates Teil 2
- Menü Templates Teil 3
- Templates Dateisystem
- Template Plugins
- Seitentyp Dashboard Teil 1
- Fazit ContentLion Live Vol. 1
- Bugfix Installer + Root-Verzeichnis speichern
- WidgetTypes
- Backend Skin
- Seitentyp Dashboard Teil 2
- Seitentyp Dashboard Teil 3
- Seitentyp Dashboard Teil 4
- Seitentyp Dashboard Teil 5
- Seitentyp Dashboard Teil 6
- Seitentyp Dashboard Teil 7
- Seitentyp Dashboard Teil 8
- Seitentyp Dashboard Teil 9
- Einstiegspunkt – Wichtiges ContentLion Update
- Einstiegspunkt – Pagelist Widget
- Einstiegspunkt – Filelist Widget
- Einstiegspunkt – Contentlion warnungsfrei
- ContentLion zieht um! + weitere Neuerungen
- ContentLion funktioniert nun auch in Unterverzeichnissen!
- Menüauflistung im Dashboard
- Logout Button im Backend
- Breadcrumb im Backend
- Neues Backend Menu Teil 1
- Coding Guidlines für ContentLion
- Neues Backend Menu Teil 2 (+Gewinnspiel)
- Neues Backend Menu Teil 3
- ContentLion Updater
- Seitentyp Settings
- Seitentyp Plugins
- Fazit ContentLion Live Vol. 2
- Implementierung Standardskin Part 1
- Neuen Ordner erstellen
- Seitentyp Neue Seite erstellen
- Seitentyp “Seite bearbeiten”
- Seitentyp “Logout”
- Exception-System
- Überarbeitung Settings-Komponente
- Menüumzug ins neue Backend
- Übersetzung der Datenbankeinträge
- Seiten in Datenbank speichern
- ordner- und seitenspezifische Einstellungen
- Caching
- Settingswidget
- 2 Wireframes für ContentLion
- Rollenliste
- ContentLion IssueKiller-Woche beginnt!
- Geplante Tasks + Actionlists
- Wigets im Skin, Dateien umbenennen
- Die IssueKiller-Woche geht zu Ende…
- Zeitplan bis zur ContentLion Alpha
- Rollenveraltung
- Benutzerveraltung
- Prüfen ob SQLite vorhanden
- Plugineinstellungen
- ContentLion Website Designvorschlag
- Neue Pluginliste + Über-Seite
- Mediathek im FileListWidget
- Upload-Überprüfung
- ContentLion Alpha – Download jetzt!
- Plugin Wunschliste ContentLion
- Vorschlag für mehr Arbeitsfläche im ContentLion Backend
- ContentLion Alpha 1.1 kommt am 21. November
- ContentLion Alpha 1.1 ist raus!
- ContentLion KW 46/2010
- ContentLion KW 47/2010
- Formulare Erstellen mit ContentLion
- ContentLion KW 48/2010
- Fazit: Mein erstes Projekt mit ContentLion geht online
- ContentLion KW 51/2010
- ContentLion KW 52/2010
- ContentLion wird in Kürze selbst gehostet
- ContentLion KW 53/2010
- ContentLion Alpha 1.2 ist fertig!
- Entwurf: Skin-Wizard für ContentLion
- ContentLion Issues sind umgezogen!
- Tutorial: ContentLion erweitern
- Aufbau ContentLion eines ContentLion-Plugin
- ContentLion API – Erste Pläne
- ContentLion Blogs gehen online!
Bild von SURZnet / Pixmac
Weitere
- Der Slogan für ContentLion heißt…
- In Kürze: ContentLion Entwickler-Bereich
- Basislayouts gesucht!
- Endspurt ContentLion
- Statistik: So nutzt ihr Content-Management-Systeme
- Gesucht: Widget-Ideen fürs CMS
- Aktueller Stand Skin-Wizard
- Skin-Wizard – Die Basislayouts
- ContentLion Live die Zweite (Bitte lesen)
- ContentLion Demosystem ist online!
- ToDos vor der ContentLion Alpha
- ContentLion Download Newsletter geht online
- ContentLion sucht Slogan!
- ContentLion Beta veröffentlicht!
- StandardSkin gesucht + erster Entwurf
- ContentLion Live Terminvorschläge
- Was haltet ihr von einer ContentLion Toolbox?
- CMS Demos auf OpenSourceCMS
- Zeitplan ContentLion
- Blogparade: Welches CMS benutzt du? ContentLion!
- ContentLion Live Programmierung
- Umfrage: Name fürs CMS
- CMS Quellcodeverwaltung + Ticketsystem eröffnet!
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Kommentare
DaFRK schrieb am 03.09.2009:
find ich super die Aktion, obwohl ich sie relativ spät entdeckt habe. Hoffe das läuft noch weiter. Ich hab mit vor zwei Wochen vorgenommen, selber eine Website zu machen und habe mir von Anfang an gesagt: Wenn du was machst, dann richtig! Also XHTML, DHTML, PHP und CSs am lernen gewesen und in einem Buch wird auch teilweise beschrieben, wie man so ein CMS macht, und das woltle ich nun auch erstellen, aber mit eigenen Elementen, sprich eigenem Editor zum Erstellen von Artikeln, eigenen Stylesheets und eigenen Funktionen, die ich an die Bedürfnisse meiner Site anpassen kann. Diese Aktion auf dem Blog hier hilft mir sehr und ich werde auf jeden Fall meine Gedanken mit einbringen, auch wenn ich noch etwas unerfahren bin. Gerne bringe ich auch ein, was ich mir für mein CMS vorgestellt habe. Sollte es mir jedenfalls irgendwann gelingen, ein CMS für meine Art Website, wie ich sie zu bauen vor habe, gelingen, werde ich es jedenfalls weitergeben, weil ich solche "openSource"-Communities stark finde, die haben mir selber sehr beim Lernen geholfen. Und jetzt stürze ich mich mal in die anderen Blogeinträge.
Stefan Wienströer schrieb am 04.09.2009:
Schön das es dir gefällt. Leser die auch mirhelfen wollen sind immer gut ;-)
Renner schrieb am 09.10.2009:
Hey Stefan! Wie in der Mail schon erwähnt finde ich es einfach Klasse von dir was du hier auf die beine stellst. Habe schon lange nach einem "CMS-Tutorial" gesucht und nun endlich gefunden. Freue mir schon drauf alle Schritte abzuarbeiten und dir mein Ergebnis zu präsentieren! :-)
Stefan Wienströer schrieb am 09.10.2009:
Viel Spaß beim Entwickeln ;-) Aber in welcher Mail hast du das erwähnt? Ist mir wohl entgangen.
Renner schrieb am 10.10.2009:
Habe ich dir geschrieben über das Kontaktformular hier auf der Seite! :) PS: bin schon bei schritt 68 .. wirklich sehr gut erklärt und programmiert! :-)
Renner schrieb am 10.10.2009:
Ach noch was .. (Weiß nicht ob du das schon überlegt hast bin noch nicht beim letzten schritt) aber wie willst du es mit den Usern machen? mit gruppenberechtigungen oder wie hast dir das gedacht? hätte hier auf der platte noch ein altes kleines memberscript mit avatar upload und sessions .. vllt interessiert es dich ja?! :-)
Stefan Wienströer schrieb am 11.10.2009:
@Renner: Kannst es mir mal zukommen lassen, werds aber wahrscheinlich stark umschreiben, so das es auch gut passt. Werd dein Testkommentar löschen^^
Chronojin schrieb am 01.07.2010:
Tag auch! Da mir die ganzeArbeit mit HTML Editor für jeden Beirag zu langwirig erscheint bin ich momentan auf dder Suche nach einem guten Tutorial und hätte eine rage zu deinem, vllt bin ich schon richtig: Wielang dauert es das Tutorial umzusetzen, also vom Einstieg bis zum unktionstüchtigen CMS und bis zum letzten Eintrag?
Stefan Wienströer schrieb am 01.07.2010:
Das kann ich dir so nicht sagen, da die Ausarbeitung des Tutorials natürlich um einiges länger dauert als das Umsetzen. Ich versuch mal den Daniel zu kontaktieren, der das ganze schon durch hat.
Daniel schrieb am 01.07.2010:
Nun ja, sagen wir das mal so. Da ich schon angebrühtet war was PHP und Konsorten angeht habe ich schon das Meiste verstanden was Stefan geschrieben hat. Also ich habe mir den Artikel durch gelesen, ihn verstanden und dann den Quelltext kopiert. Das hat dann je nach Artikellänge 5 bis 10 Minuten gedauert. Dann noch den Code im Editor meiner Wahl eingearbeitet. Das war ja noch das einfachste. Als nächstes folgte der Funktionstest. Alles in allem habe ich wohl so 30 Minuten pro Artikel investiert. Man sollte sich schon Zeit dafür nehmen. Einfach copy & paste zu nutzen ist zwar einfach, aber verstehen tut man da nichts. MfG Daniel
Chronojin schrieb am 02.07.2010:
Okay danke, das klingt. Nachdem ich neulich ein Gästebuch gemacht habe ist wenigstens schon eine asis vorhanden, da werden meine 5 Wochen sicher locker ausreichen.
Methi-jr schrieb am 14.09.2010:
Wer ma schauen, wie weit ich komme .. gefällt mir schon deine Arbeit hier ... (hoffe es is noch ab-to-date???)
Stefan Wienströer schrieb am 14.09.2010:
viel Spaß, vor ein paar Minuten ist wieder ein neuer BEitrag rausgekommen, dass könnte man wohl up-to-date nennen^^
Methi-jr schrieb am 14.09.2010:
geilst ...
Rolf schrieb am 27.10.2010:
Wenn man mit Wordpress Webseiten erstellt, ist CMS ziemlich einfach. Man braucht keine HTML oder CSS Kenntnisse. Die Arbeitsoberfläche sieht ja so aus wie bei Word. Man kann auch per Drag und Drop über Word seinen Text einfügen. Man schreibt in Word seinen Text mit all seinen Formatierungen, wie Listen und Aufzählungen und andere Formatierungen. Markiert den ganzen Kram und drück auf kopieren und fügt bei Wordpress den ganzen Inhalt ein. So einfach geht das
Stefan Wienströer schrieb am 28.10.2010:
Schon, aber hierbei handelt es sich nicht um ein Tutorial, wie man ein CMS nutzt, sondern wie man eins erstellt. Das heißt man kann durch unser fertiges CMS auch die Texte wie in Word bearbeiten und noch vieles mehr ;-)
Julian schrieb am 28.10.2010:
würde mich interessieren ob es das coole tut auch als zusammenfassung in form einer pdf datei gibt. aber trotzdem sehr nett von dir dieses tutorial zu schreiben!
Stefan Wienströer schrieb am 28.10.2010:
Ist bereits in Planung, jedoch wird es noch etwas dauern. Voraussichtlich kommt es zum oder kurz nach dem Release von ContentLion
Marco schrieb am 30.10.2010:
Hallo . Ich hab mal ne kleine Frage, was für einen Editor benutzt du? Würd mich mal interessieren. Ich benutze im moment Webocton - Scriptly.
Stefan Wienströer schrieb am 30.10.2010:
Ich nutze Notepad++, hab schon andere (PHP-)Editoren benutzt, hat mich aber bisher keiner so überzeugt -> Ich mag es einfach^^ Hab dem sogar einen Artikel gespendet: http://blog.stevieswebsite.de/2010/09/notepad-effektiv-nutzen/
Marco schrieb am 30.10.2010:
Ja wenn man dadurch schnell einen richtigen Code erstellen kann, ist es ja gut. Ich werds mir auch mal anschauen. Und mir auch den Artikel von dir durchlesen. ^^
Jordan Kniest schrieb am 09.08.2011:
Echt tolles Tutorial... ich liebe es :)
Jan trötschel schrieb am 31.10.2011:
Hallo Stefan, ich muss sagen bin zwar erst seit paar min... hier und was ich sehe gefällt mir .. Was ich vor habe ist eine kleine Community mit Forum, Chat, Mail, Voting ins leben zu rufen ich denke mal da wird mir dein blog echt gut weiter helfen mfg Jan
Weiterlesen: ⯈ Formulare
Über uns
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project