0251 / 590 837 15

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

  1. Eigenes CMS erstellen
  2. Konzeption Grundgerüst CMS
  3. Dateisystem des CMS
  4. CMS: Datenbank Einstellungen in dbsettings.php
  5. CMS Einstellungen in der MySQL-DB
  6. MySQL Verbindung aufbauen
  7. CMS Einstellungen auslesen
  8. Content auf die Seite bringen
  9. Sicherheit des Include-Befehls
  10. Schöne Urls im CMS – Mod Rewrite sei dank
  11. Seiten in der Datebank registrieren
  12. Das HTML-Grundgerüst fürs CMS
  13. CMS Skins registrieren
  14. PHP SkinController
  15. CMS Kernsystem in eine eigene Klasse packen
  16. Komplettes (X)HTML in den Skin auslagern
  17. Globale Meta-Tags in der DB speichern
  18. Lokale Meta-Daten speichern / auslesen
  19. Seiteneinstellungen in der Klasse Page
  20. PHP Breadcrumb erstellen
  21. Die CMS Menü Klasse
  22. Lokale und Globale Navigation im CMS
  23. XHTML Validation verbessern
  24. Die 4 Farben des CMS Standardskins
  25. Farbeinstellungen speichern und auslesen
  26. Websitehintergrund mit Verlauf
  27. Globales Menü ausrichten
  28. Website Container erstellen
  29. Content-Bereich nach rechts schieben
  30. Lokales Menü ein/ausblenden
  31. CMS Titel anzeigen
  32. CMS CSS-Stylesheet auslagern
  33. Das Login-Formular zum Admin-Bereich
  34. Den Admin in der DB anlegen
  35. Admin Passwort prüfen & User Klasse erstellen
  36. Login Status speichern
  37. Admin Menü erstellen
  38. Seiten im Admin-Bereich auflisten
  39. Icon-Verzeichnis anlegen
  40. Form Design für Seite bearbeiten erstellen
  41. Die Settings-Tabelle wird erweitert.
  42. Ausgeben der Einstellungsmöglichkeiten
  43. CSS braucht ein Admin-Bereich
  44. Form im Design, oder Design in Form?
  45. Ein paar kleine CMS Updates…
  46. Die CMS Menüs bekommen Namen
  47. Menüs im Admin-Bereich auflisten
  48. Menü Aktionen anlegen
  49. Editierbare Menüs im Admin-Bereich ausgeben
  50. Seitendesign Menü bearbeiten
  51. Einstigspunkt Der Code & Blog Jubiläums Beitrag
  52. CMS: Menü Eintrag hinzufügen
  53. Menü-Einträge Bearbeiten Teil 1
  54. Menü-Einträge Bearbeiten Teil 2
  55. Menü Einträge löschen
  56. Menü auswählen im ‘Seite Bearbeiten’
  57. Datenbank-Daten bei ‘Seite Bearbeiten’ verwenden
  58. Inhalt auslesen bei ‘Seite bearbeiten’
  59. ‘Seite Bearbeiten’ goes WYSIWYG
  60. Konfigurieren von WYSIWYG
  61. Seite speichern Teil1
  62. Seite speichern Teil 2
  63. Neue Links für CMS!
  64. Neues Menü erstellen
  65. Bugfix: Nur ein Menü auswählen
  66. Bugfix: Primary Key Meta-Tags
  67. Neue Seite anlegen Teil 1
  68. Neue Seite anlegen Teil 2
  69. Seite löschen
  70. Menüs löschen
  71. MySQL Tabellen auflisten für leichtere Administration
  72. Benötigte Klassen automatisch laden
  73. Tabellen auflisten mit Unterseiten
  74. Tabellennavigation der db.php
  75. MySQL Spalten auslesen und anzeigen
  76. Einstigspunkt – Aktueller Stand Eigenes CMS
  77. Tabelle mit Daten befüllen
  78. Tabellenanzeige verschönern
  79. Bugfix: $dbpraefix wurde missachtet
  80. Aktionen & Checkbox Tabellenansicht
  81. Datensatz bearbeiten anzeigen
  82. Bugfix Tabellenansicht: Checkbox nicht Checkbar
  83. Validierung Datensatz bearbeiten
  84. Seitenwechel Tabellenansicht
  85. Speicherung Daten DBManager Teil 1
  86. Renner Bugfixes
  87. Sicherheitslücke in der Verzeichnisstruktur
  88. Speicherung Daten DBManager Teil 2
  89. Bugfix: Doppeltes Admin-Login
  90. Einstellungen speicherbar machen
  91. Upload-Script integrieren
  92. Order-Funktionalität
  93. Upload-Erweiterung
  94. Bildserver
  95. Admin-Bereich: Neues Menü + Dashboard
  96. Widget-System
  97. Logout + CustomCSS
  98. PluginInfos anzeigen
  99. EventManager
  100. Plugin (de)aktivierung (CMS)
  101. 100 Artikel CMS Tutorial (+Namensverkündung)
  102. Bugfix: Upload
  103. Events werfen Teil 1
  104. Events werfen Teil 2
  105. Events werfen Teil 3
  106. Basis des Installers
  107. Installer Schrittliste
  108. Installer mit Design
  109. Navigation des Installers
  110. Schrittfestlegung, Willkommenstext + Lizenz
  111. ContentLion Lizenz
  112. Systemcheck
  113. Datenbankeinstellungen
  114. Installer Formulare befüllen
  115. Website Einstellungen
  116. Datenbank-Einstellungen speichern
  117. Tabellen anlegen
  118. Zeilen Einfügen
  119. Installation entfernen
  120. Meta Daten erstellen Teil 1
  121. Meta Daten erstellen Teil 2
  122. Dateien löschen
  123. Ordner löschen
  124. Plugin Einstellungen
  125. Typisierte Einstellungen Teil 1
  126. Vorschaufunktion
  127. Typisierte Einstellungen Teil 2 + Bugfix
  128. ColorPicker
  129. MenüSelector
  130. SkinSelector Teil 1
  131. SkinSelector Teil 2
  132. Einstiegspunkt Datenbankklasse Teil 1
  133. Datenbankklasse Teil 2
  134. Datenbankklasse Teil 3
  135. Datenbankklasse Teil 4
  136. Datenbankklasse Teil 5
  137. Datenbankklasse Teil 6
  138. Datenbankklasse Teil 7
  139. Datenbankklasse Teil 8
  140. Datenbankklasse Teil 9
  141. Datenbankklasse Teil 10
  142. Datenbankklasse Teil 11
  143. Mobile CMS
  144. Mobile Skinselector
  145. Redirect nach Admin-Login
  146. Ordnerfunktion bei Seiten
  147. Globales Menü aus Einstellungen verbannen
  148. Skinspezifische Einstellungen
  149. Submenüs Teil 1
  150. Submenüs Teil 2
  151. EinstiegspunktUpdate Installer
  152. Template Engine
  153. Benutzerübersicht
  154. EinstiegspunktRole-Tabelle + Update Installer (CMS)
  155. Die Role Klasse
  156. Seitentypen Teil 1
  157. Seitentypen Teil 2
  158. Benutzer Login
  159. Rollenspezifische Einstellungen auslesen
  160. Rollenspezifische Einstellungen Speichern Teil 1
  161. Rollenspezifische Einstellungen Speichern Teil 2
  162. Rollenspezifische Einstellungen Speichern Teil 3
  163. Einführung Namespaces
  164. Globales Menü + Bugfix in Settings
  165. Template Overwriting
  166. Zugriffsverwaltung
  167. Seiten-Templates
  168. Mehrsprachigkeit
  169. Icon – Klasse
  170. Menü Templates Teil 1
  171. Menü Templates Teil 2
  172. Menü Templates Teil 3
  173. Templates Dateisystem
  174. Template Plugins
  175. Seitentyp Dashboard Teil 1
  176. Fazit ContentLion Live Vol. 1
  177. Bugfix Installer + Root-Verzeichnis speichern
  178. WidgetTypes
  179. Backend Skin
  180. Seitentyp Dashboard Teil 2
  181. Seitentyp Dashboard Teil 3
  182. Seitentyp Dashboard Teil 4
  183. Seitentyp Dashboard Teil 5
  184. Seitentyp Dashboard Teil 6
  185. Seitentyp Dashboard Teil 7
  186. Seitentyp Dashboard Teil 8
  187. Seitentyp Dashboard Teil 9
  188. EinstiegspunktWichtiges ContentLion Update
  189. EinstiegspunktPagelist Widget
  190. EinstiegspunktFilelist Widget
  191. EinstiegspunktContentlion warnungsfrei
  192. ContentLion zieht um! + weitere Neuerungen
  193. ContentLion funktioniert nun auch in Unterverzeichnissen!
  194. Menüauflistung im Dashboard
  195. Logout Button im Backend
  196. Breadcrumb im Backend
  197. Neues Backend Menu Teil 1
  198. Coding Guidlines für ContentLion
  199. Neues Backend Menu Teil 2 (+Gewinnspiel)
  200. Neues Backend Menu Teil 3
  201. ContentLion Updater
  202. Seitentyp Settings
  203. Seitentyp Plugins
  204. Fazit ContentLion Live Vol. 2
  205. Implementierung Standardskin Part 1
  206. Neuen Ordner erstellen
  207. Seitentyp Neue Seite erstellen
  208. Seitentyp “Seite bearbeiten”
  209. Seitentyp “Logout”
  210. Exception-System
  211. Überarbeitung Settings-Komponente
  212. Menüumzug ins neue Backend
  213. Übersetzung der Datenbankeinträge
  214. Seiten in Datenbank speichern
  215. ordner- und seitenspezifische Einstellungen
  216. Caching
  217. Settingswidget
  218. 2 Wireframes für ContentLion
  219. Rollenliste
  220. ContentLion IssueKiller-Woche beginnt!
  221. Geplante Tasks + Actionlists
  222. Wigets im Skin, Dateien umbenennen
  223. Die IssueKiller-Woche geht zu Ende…
  224. Zeitplan bis zur ContentLion Alpha
  225. Rollenveraltung
  226. Benutzerveraltung
  227. Prüfen ob SQLite vorhanden
  228. Plugineinstellungen
  229. ContentLion Website Designvorschlag
  230. Neue Pluginliste + Über-Seite
  231. Mediathek im FileListWidget
  232. Upload-Überprüfung
  233. ContentLion Alpha – Download jetzt!
  234. Plugin Wunschliste ContentLion
  235. Vorschlag für mehr Arbeitsfläche im ContentLion Backend
  236. ContentLion Alpha 1.1 kommt am 21. November
  237. ContentLion Alpha 1.1 ist raus!
  238. ContentLion KW 46/2010
  239. ContentLion KW 47/2010
  240. Formulare Erstellen mit ContentLion
  241. ContentLion KW 48/2010
  242. Fazit: Mein erstes Projekt mit ContentLion geht online
  243. ContentLion KW 51/2010
  244. ContentLion KW 52/2010
  245. ContentLion wird in Kürze selbst gehostet
  246. ContentLion KW 53/2010
  247. ContentLion Alpha 1.2 ist fertig!
  248. Entwurf: Skin-Wizard für ContentLion
  249. ContentLion Issues sind umgezogen!
  250. Tutorial: ContentLion erweitern
  251. Aufbau ContentLion eines ContentLion-Plugin
  252. ContentLion API – Erste Pläne
  253. ContentLion Blogs gehen online!

Bild von SURZnet / Pixmac

Weitere

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