CMS-Implementierung

Ein Content-Management-System (CMS, deutsch „Inhaltsverwaltungssystem“) ist eine Software zur gemeinschaftlichen Erstellung, Bearbeitung und Organisation von Inhalten (Content) zumeist in Webseiten, aber auch in anderen Medienformen. Diese können aus Text- und Multimedia-Dokumenten bestehen. Ein Autor kann ein solches System in den meisten Fällen ohne Programmier- oder HTML-Kenntnisse bedienen.

Aufbauschema eines aufwendigen CMS

Besonderer Wert wird bei CMS auf eine medienneutrale Datenhaltung gelegt. So kann ein Inhalt auf Wunsch beispielsweise als PDF- oder als HTML-Dokument abrufbar sein; die Formate werden gegebenenfalls erst bei der Abfrage aus der Datenbank generiert. Je nach Anwendung kann auch eine Rechteverwaltung zum Einsatz kommen.

Joomla, Drupal, TYPO3 und Wordpress zählen zu den bekanntesten Open-Source-CMS. Wordpress und Joomla sind derzeit die meistverwendeten. Von zahlreichen Behörden der deutschen Bundesregierung (z. B. Bundesverwaltungsamt, Bundesamt für Verbraucherschutz und Lebensmittelsicherheit, Ministerien) wird der Government Site Builder (GSB) zur Pflege ihrer Onlineauftritte eingesetzt. Inhaltsverzeichnis 1

Begriff

Obwohl fachlich präzise vom Web-Content-Management-System oder WCMS gesprochen werden müsste, wird der globalere Begriff CMS im verbreiteten Sprachgebrauch für Systeme oder Module verwendet, die ausschließlich dem Erstellen von Websites dienen. Desktop-CMS[3] bewerkstelligen dies auf einem lokalen Rechner mit anschließendem Hochladen, andere Systeme direkt auf einem ausliefernden Webserver.

In Abgrenzung von Systemen mit offline verwendetem Content spricht man bei obigen Systemen auch von WCMS. Damit wird der Unterschied zu jenen Systemen etwa im Verlagsbereich verdeutlicht, die neben dem Web auch andere Ausgabemedien bedienen, etwa Print oder Radio. Web-Content-Management kann auch als eine Komponente im Enterprise-Content-Management gesehen werden.

Funktionen

Darstellung

Die Hauptaufgabe eines CMS ist die Verwaltung und zielgruppengerechte sowie barrierefreie Darstellung von Text- oder Multimediainhalten für Webbrowser.

Zusätzlich zum Hauptinhalt einer Seite werden weitere Inhalte mit eingebunden, so z. B. Metainformationen wie Veröffentlichungsdatum, Autor, Inhaltsverzeichnis, Mehrfachverwendung von Inhalten durch Transklusionen und externe Datenquellen wie z. B. Kalender, Karten oder Nutzerdaten (z. B. Gravatar) über dritte Programmierschnittstellen (API) oder Webservices wie RSS.

Neben der Darstellung einzelner Inhalte bietet das CMS automatisch alternative Inhaltsaggregation an:

  • Gruppierungen zu Kategorien,
  • zeitliche Veränderung und neu erstellte Inhalte, maschinenlesbare Ausgabe von Inhalten für Feeds (z. B. Atom, RSS),
  • Mikroformate oder Programmierschnittstellen zur Integration in andere Dienste (z. B. als JSON), ähnliche, eventuell für den Leser interessante, Inhalte sowie Druckversion.

Durch das integrierte Content-Life-Cycle-Management können Inhalte automatisch zeitlich begrenzt veröffentlicht oder archiviert werden.

Integrierte Suchmaschinen ermöglichen darüber hinaus dem User, die Inhalte einer Webseite auch zu durchsuchen. Diese Suchmaschinen sind entweder schon in der Software integriert oder werden als externe Dienste eingebunden. OpenSearch erlaubt den Zugriff auf die Suchfunktion auch von außerhalb der Webseite. Nicht zu verwechseln sind diese Möglichkeiten mit denen so genannter Metasuchmaschinen.

Das Erstellen und Bearbeiten der Inhalte erfolgt meist über ein Online-Textverarbeitungs-Modul oder Dateien direkt auf dem Webhost; ältere Systeme bieten noch gesonderte Clientsoftware zur Bearbeitung an.

Backend von Wordpress

Bei der Online-Textverarbeitung wird entweder ein gesondertes Backend angeboten, oder Berechtigte können direkt in der Darstellung bearbeiten. Wikis bieten meist ausschließlich die direkte Eingabe an.

Die Texteingabe erfolgt, je nach Kenntnisstand des Bearbeiters, entweder über eine WYSIWYG, eine vereinfachte Auszeichnungssprache (z. B. Markdown) oder reines HTML. Um den Inhalt in seiner endgültigen Version zu sehen, werden meistens Vorschauen angeboten.

Mit einer intergrierten Versionsverwaltung wird der Erstellungsprozess gleichzeitig archiviert und protokolliert. Bestimmte Versionen können so im Fehlerfall wiederhergestellt werden.

Berechtigung

Um unberechtigte Änderungen zu verhindern und um Änderungen nachvollziehen zu können, müssen sich Bearbeiter authentifizieren und werden anhand eines Berechtigungskonzepts Benutzerrollen zugewiesen. Benutzer werden meist hierarchisch unterschieden, so können z. B. bestimmte Editoren Artikel anlegen, müssen aber von Administratoren freigeschaltet werden. Ein vertikales Rollensystem erlaubt dann bestimmten Benutzergruppen nur in bestimmten Bereichen zu arbeiten (z. B. Abteilung).

Diese Rollen- und Rechtestruktur kann einfache Freigaben nach dem Vier-Augen-Prinzip oder komplexe Workflows abbilden. An solchen Workflows können sich mehrere Personen mit verschiedenen Aufgaben beteiligen, z. B. Autoren, Editoren und Webmaster, die Inhalte erzeugen, genehmigen oder freischalten. Hier spricht man von Redaktionssystemen.

Userinteraktion

Vor allem Social Media-Webseiten, wie z. B. Blogs, zeichnen sich durch eine hohe Möglichkeit der inhaltlichen Einbindung des Lesers aus. User können Kommentare zum Inhalt hinterlassen oder mit externen Trackbacks auf Inhalte verweisen. Aber schon die klassische Gästebuch-Funktion ist eine Funktion der Userinteraktion. Im Bereich des User-generated content vermischen sich Userinteraktion und Inhaltserstellung.

Neben der Benutzerfreundlichkeit müssen Funktionen zu Userinteraktion vor allem leistungsfähig gegen Suchmaschinen-Spamming sein. Das wird vor allem mit CAPTCHAs, nofollow und DNS-based Blackhole List erreicht.

Technische Funktionen

In Zusammenarbeit mit dem Webserver können CMS teilweise auch Aufgaben der Übertragung und des URL- Aufbaus übernehmen. Vor allem Domainweiterleitungen, Clean URLs und Permalinks werden im CMS konfiguriert. Auch Fehlerseiten (404) können von einem CMS ausgeliefert werden. Durch Mandantenfähigkeit können mehrere unabhängige Webseiten betrieben werden. Um CMS möglichst individuell erweitern zu können, werden meist Plug-ins angeboten. Werden weitere komplexere Funktionen abgebildet spricht man von einer Webanwendung.

Technik

Content-Management-Systeme sind größtenteils plattformunabhängig, da sie in Skriptsprachen geschrieben werden. Alle gängigen Skriptsprachen wie PHP, Ruby, Perl, Python oder JavaScript werden von den gängigsten Webservern (Apache, IIS, ngnix) unterstützt. Das proprietäre ASP.NET läuft nur auf IIS.

Die eigentlichen Inhalte werden oft in Datenbanken gespeichert, da diese schnellere Zugriffe erlauben und Datenbankindizies für Kategorien, Listen und Feeds zur Verfügung stellen. Kleinere CMS können Inhalte aber auch in Textfiles speichern. Als Datenbank wird von praktisch allen CMS MySQL unterstützt, aber häufig finden auch PostgreSQL oder Microsoft SQL Server Verwendung.

Content-Management-Systeme verknüpfen die gespeicherten Inhalte mit Formatvorlagen und übergeben diese an den ausliefernden Webserver. Softwarearchitektonisch kommt meist das Entwurfsmuster Model View Controller zur Verwendung.

Aufgrund der engen Verbindung und Abhängigkeit zwischen diesen Softwarelementen werden diese meist gemeinsam installiert. Für OpenSource CMS gibt es die Bundles LAMP und für Entwicklungsumgebungen XAMPP. Physisch laufen CMS auf Hosts, die aber von Hostern als Webhosting oder auch als Application Service angeboten werden.

Vor allem Opensource CMS versuchen nicht alle möglichen oder gewünschten Funktionen nativ anzubieten, sondern durch serverseitige Hooks und clientseitige Standardbibliotheken (z. B. jQuery) die Integration von Plug-ins zu ermöglichen.

Klassifizierung

Dynamik und Statik

CM-Systeme unterscheiden sich in der Art der Auslieferung der erstellten Seiten an den Nutzer:

Volldynamische Systeme

Volldynamische Systeme erzeugen angeforderte Dokumente bei jedem Aufruf dynamisch neu, das heißt, Vorlagen und Inhalte werden erst bei Abruf interpretiert bzw. zusammengeführt und ausgegeben. Vorteile: Die Seite ist immer "aktuell"; eine Personalisierung für den Surfer ist in der Regel sehr einfach oder sogar bereits vorhanden. Nachteile: Die Berechnung kann unter Last eines großen Besucherandrangs zu einer verzögerten Auslieferung der Seiten oder bei mangelhafter Ausstattung/Konfiguration an Rechenkapazität im Verhältnis zur Anzahl gleichzeitig bedienter Nutzer zur Serverüberlastung und im Extremfall zum Systemstillstand führen.

Statische Systeme

Statische Systeme erzeugen die einzelnen Webseiten aus den Vorlagen und Inhalten als statisch abgelegte Datei im Dateisystem oder ggf. in einer Datenbank. Als Endprodukt erhält man somit Dokumente, die keinerlei Interpretation seitens einer Servertechnologie wie z. B. ASP, JSP oder PHP mehr benötigen und daher direkt durch den Webserver ausgegeben werden können, was sich in der Ausgabegeschwindigkeit zeigt. Dies hat den Vorteil, dass selbst einfachere Webhosting-Produkte als Basis ausreichend sein können. Nachteil kann sein, dass möglicherweise gewachsene Anforderungen durch größere Komplexität in Verbindung mit dem Wunsch nach sehr kurzen Aktualisierungszyklen ein solches System als ungeeignet entpuppen. Rein statische Systeme bilden den historischen Ursprung der CMS und werden nur noch selten eingesetzt.

Hybride Systeme

Hybride Systeme kombinieren die Vorteile der statischen und der volldynamischen Seitenerzeugung. Lediglich die Inhalte, die dynamisch aus einer Datenbank generiert werden müssen (z. B. News, Suchabfragen, personalisierte Inhalte oder Shopdaten), werden zur Laufzeit aus der Datenbank ausgelesen. Alle anderen Inhalte, die nicht laufend Änderungen unterzogen werden (wie etwa das Seitengerüst, die Navigation, aber auch bestimmte Texte und Bilder), liegen statisch vor.

Halbstatische Systeme

Halbstatische Systeme generieren den Inhalt so, dass dieser statisch ist, aber gleichzeitig auch dynamisch, d. h., es werden alle Daten direkt in statisch generierten Dateien gespeichert, die dann bei Abruf sofort ausgegeben werden. Die dynamischen Inhalte werden dann generiert, wenn ein Code in der Programmsprache in die Datei eingebunden wird oder einzelne Datensätze geändert beziehungsweise neu angelegt werden.

Mehr Info: Wikipedia