NEWS:




Das BitCMS - Bitmunchers CMS

Diese Website basiert auf einem CMS, das ich "from scratch" in PHP selbst geschrieben habe. Es ist vollständig modular aufgebaut. Das bedeutet, dass jede Unterseite als auch diverse Tools zur Verwaltung der Seite als Module implementiert sind. Die Inhalte der Unterseiten werden dabei aus einer Datenbank geholt, während administrative Tools als PHP-Klassen umgesetzt sind. Jede PHP-Klasse bildet dabei ein eigenes Modul, das von der Klasse "Bitmodule" abgeleitet ist. Die Bitmodule-Klasse sorgt dafür, dass den abgeleiteten Klassen Dinge wie GET- und POST-Daten zur Verfügung gestellt werden, der Pfad zum HTML-Template definiert wird uvm.. Sie stellt den Kern des CMS dar.

Eine Bootstrap-Klasse ist dafür verantwortlich, dass die als GET-Parameter angegebenen Module den entsprechenden Klassen zugeordnet werden. Um XSS-Angriffe zu unterbinden, findet dabei ein direktes Mapping statt. So wird auch verhindert, dass sämtliche Klassen direkt angesprochen werden können, da zum Beispiel die Template-Klasse nur vom CMS selbst angesprochen werden darf.

Um zu große Abhängigkeiten zu vermeiden, nutzt das CMS keine Frameworks wie Zend u.ä.. Neben den Standard-Funktionalitäten von PHP kommt lediglich MySQLi als Erweiterung zum Einsatz. Diese Erweiterung ist notwendig um die Zugriffe auf die Datenbank zu gewährleisten. Weiterhin wird Securimage und CKEditor verwendet.

Aktuell bietet das CMS folgende Funktionalitäten.

  • Benutzerverwaltung inkl. Rechte-Management, Benutzer-Registrierung und Änderung einzelner Benutzerdaten
  • WYSIWYG-Erstellung von Inhalten
  • Verwaltung von Inhalten
  • Erstellung und Verwaltung der Navigation
  • Bilder-Verwaltung mit Upload-Möglichkeit und automatischer Thumbnail-Erstellung
  • Blog-Modul mit WYSIWYG-Erstellung von Blog-Beiträgen und Kommenar-Verwaltung
  • Anzeige und Verwaltung einer News-Meldung
  • Impressum und Kontakt-Formular
  • Verwaltung des Seiten-Header
  • grundlegende SEO-Funktionalitäten

Das CMS ist Multi-Domain-fähig. Dafür können Domains in Domaingruppen eingeteilt werden. Jede Domaingruppe verfügt über ein eigenes Template sowie eine eigene Navigation. Die Inhalte werden hingegen zentral genutzt um sie auch innerhalb verschiedener Domaingruppen verwenden zu können.

Sämtliche HTML-Inhalte, die nicht generiert oder aus der Datenbank geholt werden müssen, liegen als HTML-Template-Dateien vor. In diesen Templates befinden sich entsprechende Markierungen, die vom CMS mit Inhalten ausgefüllt werden.

Für ein spezielles Projekt von mir, das sich gerade im Aufbau befindet, habe ich das CMS um Google-Maps-Funktionalitäten erweitert. Das zugehörige Modul ist in der Lage Markierungen auf einer Karte darzustellen und mit Informationen zu versehen. Die Markierungen sind in Kategorien unterteilt, wobei jeder Kategorie eine bestimmte Markierungsfarbe zugeordnet wird. Natürlich können im Administrationsbereich des CMS jederzeit neue Markierungen hinzugefügt (inkl. Geolocation-Unterstützung) oder bereits vorhandene bearbeitet werden.

Das CMS besteht aktuell aus ca. 8000 Zeilen PHP-Code und ca. 1500 Zeilen HTML.


Zurück