Facebook
Twitter
Google+
Kommentare
17

Eigenes CMS in 20 Zeilen Code

Eigentlich wollte ich ja heute was über Doctrine Annotations schreiben, kam aber gestern auf die Idee, wie ich mir mein eigenes CMS baue und hab’s natürlich auch gleich umgesetzt. Bevor ich also vergesse, wie ich das gemacht habe, hier der Artikel dazu. Doctrine machen wir dann einfach am Montag.

Für die Webseite von LiveTest wollten wir ein einfaches CMS haben. Userverwaltung und einfachster WYSIWYG-Editor waren Voraussetzung. Versionierung wäre natürlich auch toll. Wenn eine Doku schon dafür existiert wäre das natürlich ein Pluspunkt. Kostenlos muss es auch sein. Da ich keine Lust auf Joomla, WordPress oder Typo3 hatte, hab ich mir einfach was ausgedacht.

Da ich gerade Hunger habe, werde ich das Projekt jetzt einfach mal als Kochrezept aufstellen:

  • Man nehme sich github und lege ein neues Repository an. Der schöne bei denen ist nämlich, dass dort zu jedem Repo auch ein Wiki angelegt wird.
  • Man fülle das Wiki mit den Inhalten, die man benötigt. Da man dort eine Userverwaltung geschenkt bekommt und auch ein WYSIWYG-Editor dabei ist, hat man schon fast alle Anforderungen erfüllt, die man erfüllen wollte.
  • Dummerweise hatten wir ja gesagt, dass es gut aussehen soll. Was also machen? Ganz einfach. Github legt das komplette Wiki in einem Repository ab, auf welches man einfachst zugreifen kann.
  • Jetzt wechseln wir das System und fangen an ein wenig zu programmieren. Auf unserem Webserver checken wir jetzt alle 5min das Wiki-Repository aus. Ich habe dafür einen einfachen Cronjob gewählt. Bis jetzt sind wir bei einer Zeile Code für den Cronjob.
  • Nur bauen wir unsere Applikation. Da das github-Wiki im Normalfall mit markdown funktioniert, nehmen wir uns einfach einen passenden Parser. Dieses inkludieren wir. Zweite Zeile Code.
  • Eigentlich könnten wir den geparsten HTML-Code einfach anzeigen und über CSS ein wenig schöner machen. Wir wollen aber noch ein wenig pimpen. Wäre es nicht toll, wenn dem Template noch Variablen zuordnen könnten, die wir auch im Wiki pflegen? Ja wäre es. Ich habe mich dabei auf die Syntax @category=Projekt@ geeinigt. Aus den rohen Wikidaten hole ich mir die einfach per regulären Ausdruck raus und schreibe sie in Variablen. Fertig.
  • Jetzt noch ein wenig Code-Verschönerung betreiben und das ganze in Klassen packen und schon ist alles nutzbar.

Das war auch schon alles. Ich werde den Source-Code dazu auch die nächsten Tage mal auf Github schieben, falls jemand anderes auch so seine Daten verwalten will. Ansonsten werde ich das ganze wohl auch noch in ein Symfony2-Bundle packen.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

17 Comments

  1. Die Idee find ich super. Ähnlich dachte ich auch schon andere Platformen dazu zu verwenden die Daten einer Website zu verwalten. Beispiel Facebook! Die Struktur welche im Facebook vorhanden ist, und man als Entwickler zugreifen kann sind eigentlich für eine kleine Website vollkommen ausreichend. Zudem gibt es eine einfache Gallerie-Funktion für Bilder 🙂

    Sollte diese Idee wieder mal auf nehmen… Github zu verwenden find ich schon sehr geek-ish *applaus* 😉

    Reply
  2. @Timos: Mann seid ihr viele.

    @Christian: Da ist natürlich gar nichts falsch dran, aber:
    1) Wäre das ein langweilig Artikel geworden (auch wenn github da was echt gutes hingelegt hat)
    2) Tüftel ich gerne
    3) Habe ich leider die Anforderung eigenen PHP-Code einzubauen, was so glaube ich nicht funktioniert.

    Reply
  3. Der erste Teil deiner Idee erinnert mich an gitit [1], da das Wiki git oder darcs als Backend verwenden kann. Den zweiten Teil habe ich mit Hakyll [2] assoziiert, das zum Aufbauen statischer Seiten verwendet wird – auch mit Markdown-Syntax. Letzteres hat natürlich den Vorteil, dass man Github nicht verwenden muss, aber auch den Nachteil, dass es keinen WYSIWYG-Editor gibt – wer braucht so was eigentlich? 😉
    Ich denke, man kann Hakyll (oder ähnliche Generatoren) auch in derselben Form verwenden kann, wie du es getan hast.

    [1] http://gitit.net/
    [2] http://jaspervdj.be/hakyll/

    Reply
  4. Ja, nette Idee. Hinkt bei der TOC-Erstellung etwas hinterher eventuell. Eine passende Suchmaschine könnte ich dir noch beisteuern, wenn du brauchst.

    Übrigens eignet sich ein Repository auch ganz gut um IDE- und Server-Konfigurationen zu verwalten. Man kann da auch ganz nett seine ganze PHP und PEAR-Konfiguration einchecken und somit auf mehreren Entwicklungsrechnern synchron halten. Funktioniert super und man spart sich das Versionschaos!

    Reply
  5. @Tom: Bei der Suchmaschine wollte ich mal ein wenig mit Google rumpspielen, mal schauen, wie sehr man das integrieren kann. TOC hab ich einfach einen Directory-Iterator genommen, die Dateien heißen immer so wie ihr Inhalt. ISt nicht schön, aber geht einigermaßen.

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen