In diesem Blog wird in der Aktion Code & Blog ein eigenes CMS erstellt. Es werden in unregelmäßigen Abständen immer wieder neue Artikel veröffentlicht. In den Artikel wird dann nach und nach das CMS erstellt. Nebenbei gibt es noch viele Hilfreiche Tipps & Tricks zum Thema WebEntwicklung.
Mach doch am besten selbst mit. Lies dir die Artikel durch und baue das CMS mit. Durch die Kommentarfunktion kannst du auch selbst Einfluss darauf nehmen, wie das CMS später sein wird. Bleib doch einfach auf dem Laufenden und abonniere den RSS-Feed oder Folge dem Blog auf Twitter.
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.
Hier sind die bisher erstellten Artikel. Arbeite sie doch einfach mal ab, um auf den aktuellen Stand zu sein:
- 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

Dieses CMS ist unter einer Creative Commons-Lizenz lizenziert.
Im Forum von Eigenes CMS kannst Du dir Erweiterungen anderer Leser ansehen, Bugs melden und Erweiterungen wünschen / vorstellen. Schau doch mal vorbei!









Hi,
bei mir fehlt PEAR. Muss sehen, das ich das installiere!
Gruß Rainer
Kommentar von Rainer Netz — 27. November 2009 @ 21:47
PEAR brauchste für das CMS gar nicht. Ist das ganze eigentlich im Root-Verzeichnis? Unterverzeichnisse werden derzeit noch nicht unterstützt.
Kommentar von Stefan Wienströer — 27. November 2009 @ 22:50
Guten Abend Stefan,
Also beim WAMP ist es so: C:\wamp\www\SERVER\test\system\.
Beim Wamp ist der Ordner www das rootverzeichnis, jedenfalls packe ich da alle meine Webseitenprojekte hinein.
Den Ordner SERVER habe ich für meine Projekte erstellt, in dem befinden sich dann alle Projekte. Direkt im www-Ordner befindet sich eine INDEX.PHP vom Wamp mit PHPcode. TEST ist der Ordner in dem sich dann das CMS befindet. Der Ordner SYSTEM gehört somit zum CMS.
Meine eigenen Webseiten befinden sich also auch noch im Ordner SERVER.
So kann ich über Localhost das jeweilige Teil aufrufen.
Ich habe mich deshalb für den Wamp entschieden und weil da alles fertig über eine exe installiert wird. Sonst müsste ich ja alles per Hand machen und dann wäre ich verloren!
Also liegt es warscheinlich an den Ordnern?
Rainer
Kommentar von Rainer Netz — 28. November 2009 @ 00:00
Nachtrag Rainer,
der Ordner SERVER sollte eigendlich htdocs heißen. SERVER hört sich vornehmer an. Auf jedenfall wird immer der Ordner in www als Localhost aufgerufen.
Wie schon geschrieben ich benutze wamp5 und nicht den xampp!
Gruß Rainer
Kommentar von Rainer Netz — 28. November 2009 @ 01:14
Auch den XAMPP gibt es als Installerversion. Bei dem Du nur die setup ausführst. Nebenbei hast Du dann auch ein schönes Kontrollcenter bei dem sich bei laufenden Servern über Button Admin einfach der Browser öffnet und dir entweder den localhost oder phpmyadmin öffnet.
MfG Daniel
Kommentar von Daniel — 29. November 2009 @ 16:51
Ich glaube auch das das System mit SERVER nichts anfangen kann. Wenn es SERVER sein soll musst Du ja wieder in den dazu passenden ini´s rumeditieren. (e´was für ein Wort).
Kommentar von Daniel — 29. November 2009 @ 16:54
Guten Abend Daniel,
war ein bischen krank. Ja Du hast recht mit der Bezeichnung Server. Habe den Ordner jetzt in htdocs umbenannt. Weis auch nicht wie ich darauf gekommen bin.
Jedenfals hatte ich an dem Abend noch weiter rumbrobiert.
Wenn ich so schreibe wird die Testseite angezeigt:
include(“content/articles/testseite.htm”.$_GET['include']);
Vermute so ist es nicht gewollt!
Gruß Rainer
Kommentar von Rainer Netz — 30. November 2009 @ 21:47
Also ich muss sagen irgendwie funktioniert das mit der ConstumCSS net wirklich oder ich bin zu dumm.
Wenn ich mich im admin bereich einlogge bekomm ich lediglich den schwarzen menü balken angezeigt mehr nicht.
Und alle artikel bis 100 sind durch hab diese auch mit den vom download verglichen stimmt soweit alles. nur auser schwarzen balken im admin ist kein menü nix da.
das cms liegt auch in keinem unterverzeichniss.
sondern direkt im hauptzeichnis.
Kommentar von Jörg Müller — 6. Dezember 2009 @ 18:05
Sind in der Tabelle cms_menu Einträge mit {admin}? Wenn nicht, kannste folgenden Query benutzen um das Menü einzufügen:
INSERT INTO `cms_menu` VALUES (1, 4, ‘Dashboard’, ‘/admin/’);
INSERT INTO `cms_menu` VALUES (2, 4, ‘Seiten’, ‘/admin/index.php?page=sites’);
INSERT INTO `cms_menu` VALUES (3, 4, ‘Menüs’, ‘/admin/index.php?page=menues’);
INSERT INTO `cms_menu` VALUES (4, 4, ‘Dateien’, ‘/admin/index.php?page=files’);
INSERT INTO `cms_menu` VALUES (5, 4, ‘Plugins’, ‘/admin/index.php?page=plugins’);
INSERT INTO `cms_menu` VALUES (6, 4, ‘DB’, ‘/admin/index.php?page=db’);
INSERT INTO `cms_menu` VALUES (7, 4, ‘Einstellungen’, ‘/admin/index.php?page=settings’);
INSERT INTO `cms_menu` VALUES (8, 4, ‘Statistik’, ‘/admin/index.php?page=stats’);
INSERT INTO `cms_menu` VALUES (9, 4, ‘Logout’, ‘/admin/index.php?page=logout’);
Kommentar von Stefan Wienströer — 6. Dezember 2009 @ 19:30
hab ich nun gemacht jedoch reaktion gleich null.
bleibt weiterhin so wie es ist.
oder müssen die links die cms_dashboards?
Kommentar von Jörg Müller — 6. Dezember 2009 @ 19:42
Kannste mal nen Screenshot davon hochladen oder mir per Mail schicken?
Kommentar von Stefan Wienströer — 6. Dezember 2009 @ 20:01
okay soweit hab ich das nun geschafft, funktioniert.
aber…. jetzt hab ich wenn ich die seiten im admin bearbeiten will folgenden fehler:
Fatal error: Call to undefined method Page::readContent() in /var/www/virtual/xxxxxxx/htdocs/admin/includes/site-edit.php on line 17
xxx = domain unkenntlich
Kommentar von Jörg Müller — 6. Dezember 2009 @ 20:02
Fehlt vielleicht die Klasse /system/classes/page.php?
Kommentar von Stefan Wienströer — 7. Dezember 2009 @ 18:54
ne die datei ist vorhanden, wenn ich das richtig interpretiere,
für mich ist das ganze auch neuland
nur was ich soweit verstanden hab, das der fehler auf eine ungültige funktion hinweist.
nur wenn ich das ganze vergleichen mit dem script was bereits als Subversion bereit steht, ist alles richtig an dem code.
daher frag mich ja was der fehler zu bedeuten, oder liegt das am Openbasedir?
Kommentar von Jörg Müller — 8. Dezember 2009 @ 16:00
Hat er vielleicht keine Leserechte, aber dann würde er eigl so eine Meldung bringen. Kannste mal in der Datei /admin/includes/site-edit.php nachsehen, ob dort der Parameter “../” übergeben wird?
Kommentar von Stefan Wienströer — 8. Dezember 2009 @ 18:46
loadProperties(mysql_real_escape_string($_GET['site']));
if($_POST['save']){
$page->deleteContent(“../”);
$page->save();
$page->writeContent(“../”,$_POST['content']);
$content = $_POST['content'];
}
else if(isset($_POST['menu'])){
$page->title = $_POST['title'];
$page->alias = $_POST['alias'];
$page->menu = $_POST['menu'];
$content = $_POST['content'];
}
else{
$content = $page->readContent(“../”);
}
?>
macht er alles
schreibrechte hab hab ich auch mal geben alles, aber keine chance.
fehler bleibt weiterhin bestehen.
Ich hab jetzt mal ein komplett frisches auf der svn genommen, das draufgehauen, aber dort is auch der fehler.
Kommentar von Jörg Müller — 8. Dezember 2009 @ 22:06
Servus,
wann machst du den nächsten einstiegspunkt?
Habe etwas am CMS rumgespielt und bemerkt das meine sicherung vom originalen durch den umzug auf Windoof 7 wech ist^^
das ist ziemlich scheisse ..
Kommentar von Renner — 9. Dezember 2009 @ 11:50
Im Jubiläumsartikel ist einer:
http://blog.stevieswebsite.de/2009/12/100-artikel-cms-tutorial-namensverkundung/
Kommentar von Stefan Wienströer — 9. Dezember 2009 @ 12:39
Nö. Da ist leider keiner. Aber man kann sich ja die Dateien bei Codeplex https://eigenescmsbeta.codeplex.com/ in der Rubrik Sourcecode als Gesamtpaket runterladen.
Kommentar von Daniel — 9. Dezember 2009 @ 16:09
ich wollte mal fragen vieleicht hat ja schon jemmand eine idee, für das problem.
Auserdem wollte ich mal fragen wo man eigene ideen veröffentlichen kann?
weil ich hab ein gästebuch geschrieben für das cms, und den code an das cms angepasst.
so das es integriert ist.
administrieren kann man das im admin bereich des cms
Kommentar von Jörg — 9. Dezember 2009 @ 20:03
Für den Fall das Du im Forum angemeldet bist könntest Du eine zip/rar oder was auch immer Datei hochladen mit allen geänderten dateien und einer kleinen Einbauanleitung. Analog ginge das auch über https://eigenescmsbeta.codeplex.com/ . Dort müsste Dich Stevie dann aber erst mal als Developer freischalten. Dann müsstest Du dir z. B. TortoiseSVN runterladen. Eine kleine Anleitung findest du hier.: http://blog.stevieswebsite.de/2009/11/einfuhrung-in-tortoisesvn/
MfG
Daniel
Kommentar von Daniel — 11. Dezember 2009 @ 12:02
Wann kommt denn ein neuer Einstiegspunkt ? ^^
Kommentar von Peter — 14. Dezember 2009 @ 16:40
Bei 125 wahrscheinlich. Der letzte war aber bei 100, der ist hier zu finden:
http://blog.stevieswebsite.de/download/cms-2009-09-16.zip
Kannst aber auch den aktuellsten Code bei Codeplex runterladen, wie das geht steht hier:
http://blog.stevieswebsite.de/2009/11/einfuhrung-in-tortoisesvn/
Kommentar von Stefan Wienströer — 14. Dezember 2009 @ 17:41
Mal ne frage vieleicht is das ja ein Bugfehler im cms?
ich bekomme folgende fehlermeldung,
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/virtual/xxxx/htdocs/system/classes/eventmanager.php on line 24
was is da das problem?
Kommentar von Jörg Müller — 20. Dezember 2009 @ 16:08
Kannste mal in der Datei ein mysql_error ausgeben lassen?
Kommentar von Stefan Wienströer — 20. Dezember 2009 @ 16:31
ein mysql error ausgeben lassen?
wie stell ich das an?
Kommentar von Jörg Müller — 20. Dezember 2009 @ 17:55
echo mysql_error();
Das ganze dann in der Datei /system/classes/eventmanager.php in Zeile 24
Kommentar von Stefan Wienströer — 20. Dezember 2009 @ 19:01
sorry aber irgendwie steh ich entweder aufm schlau oder ich bin zu doof.
wie soll echo mysql_error();
denn in die zeile 24 einbauen.
da steht bei mir:
in der zeile:
while($row = mysql_fetch_row($mySqlRes)){
Kommentar von Jörg Müller — 20. Dezember 2009 @ 20:17
Mit nem neuen Zeilenumbruch^^
Kommentar von Stefan Wienströer — 21. Dezember 2009 @ 12:35
Wie wäre dieses Script als Anregung für unseren Installer
http://www.apphp.com/php-easyinstaller/index.php
Kommentar von Daniel — 21. Dezember 2009 @ 18:54
Ich glaub es ist leichter selbst eins zu bauen. Denn zum Beispiel wird es schon mit den Tabellenpräfixen schwierig – Da braucht man schon die Pro-Version.
Bei einem selbst gebauten Installer haben wir alle Freiheiten. So können wir später zum Beispiel schon Plugins vorinstallieren und den User Einstellungen machen usw.
Kommentar von Stefan Wienströer — 21. Dezember 2009 @ 20:12
Ich meinte auch nur als Anregung für unseren. Nicht das wird den nutzen sollen. Aber vom Look & Feel wie man neudeutsch sagt, gefällt er mir sehr gut.
Kommentar von Daniel — 22. Dezember 2009 @ 13:07
Dann werd ich mir das mal runterladen
Kommentar von Stefan Wienströer — 22. Dezember 2009 @ 17:49
also hab das nun lokal laufen und der fehler sieht wie folgt aus
mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\system\classes\eventmanager.php on line 24
Kommentar von Jörg Müller — 25. Dezember 2009 @ 19:14
Hast Du ICQ? Wenn ja kannste mich ja dort mal anschreiben, dann müssen wir nicht alles über die Kommentarfunktion machen. Meine Nr. ist 320-290-276.
Kommentar von Stefan Wienströer — 25. Dezember 2009 @ 22:57
Ich bin gerade dabei eine Anwenderdoku zu schreiben. die Beschreibung des Installers muss ich erst mal weg lassen. Aber den Rest könnte ich ja schon mal verWORDen. Habe jetzt 24 Stunden Zeit (OvWa) http://de.wikipedia.org/wiki/Offizier_vom_Wachdienst#Allgemeines
Oder hast Du da schon mit angefangen?
Leider muss ich heute arbeiten. Somit kann ich noch keine Screenshots anfertigen (schade). Den Entwurf schicke ich dir dann per Mail zu, ok?
Kommentar von Daniel — 27. Dezember 2009 @ 10:04
Kannste gerne machen. Wie wär’s denn wenn ich nen Wiki aufsetzen würde? Dann können wir parallel gut daran arbeiten.
Kommentar von Stefan Wienströer — 27. Dezember 2009 @ 11:48
jop das ist doch ne Idee. Aber eine Version zum ausdrucken oder als pdf finde ich auch nicht schlecht. Die kann man dann auch offline (beim lokalen basteln)lesen
Kommentar von Daniel — 27. Dezember 2009 @ 13:15
Das Wiki müsste dann aber schon unter der ContentLion URL eingerichtet sein.
Kommentar von Daniel — 27. Dezember 2009 @ 13:28
Werd mich heut Nachmittag / Abend mal drum kümmern.
Kommentar von Stefan Wienströer — 27. Dezember 2009 @ 13:45
Da die Kommentarliste zu lang wird,
wird sie nun geschlossen.
Für Fragen und Anregungen gibt es im Forum einen eigenen Bereich fürs CMS:
http://forum.stevieswebsite.de/eigenes-cms-f12/
Kommentar von Stefan Wienströer — 29. Dezember 2009 @ 19:16
Ich hab netterweise die Kommentare mal wieder geöffnet, da das Forum nicht so häufig genutzt wird
Kommentar von Stefan Wienströer — 23. August 2010 @ 19:09