TYPO3 CMS ist ein freies Content-Management-Framework für Internetseiten, das seit Oktober 2012 offiziell unter dem Namen TYPO3 CMS angeboten wird. Ursprünglich wurde TYPO3 von Kasper Skårhøj entwickelt. TYPO3 basiert auf der Skriptsprache PHP. Als Datenbank kann MySQL oder MariaDB, aber auch PostgreSQL oder Oracle eingesetzt werden.
Von 2007(?) bis 2015 wurde TYPO3 von zwei Kernentwicklungsteams beständig weiterentwickelt. Ein Team kümmerte sich um das „TYPO3 CMS“, das andere um das neuere „TYPO3 Neos“. 2015 trennte sich Neos von der TYPO3-Association und wird seitdem als eigenes Produkt weiterentwickelt. Die geschützte Marke TYPO3 dient zudem seit Oktober 2012 als Heimat für eine Reihe weiterer Produkte.
Zahlreiche Funktionen von TYPO3 können mit Erweiterungen integriert werden, ohne dass ein eigener Programmcode geschrieben werden muss. Die derzeit über 5000 Erweiterungen stammen zum größten Teil von Fremdanbietern und sind kostenlos verfügbar. Erhältlich sind unter anderem Erweiterungen für News, Shop-Systeme oder Diskussionsforen.
Das System ist auf Mehrsprachigkeit ausgelegt und wird von einer Anwender- und Entwicklergemeinde aus aller Welt betreut. In einer bislang (Stand: Dezember 2014) unvollständigen Untersuchung wurden etwa 359.000 TYPO3-Installationen im Internet gefunden, überproportional viele davon im deutschen Sprachraum. TYPO3 gehört damit neben Drupal, Joomla und WordPress mit zu den bekanntesten Content-Management-Systemen aus dem Bereich der freien Software.
Namensherkunft
Der Name TYPO3 stammt daher, dass Kasper Skårhøj bei der Entwicklung durch einen Tippfehler (englisch „typing error“, kurz „typo“) einen Teil seiner Arbeit verlor. Die Zahl „3“ wurde dem Namen schließlich angehängt, nachdem die dritte Version von TYPO durch ihren Erfolg als eine Art Marke bekannt wurde.
Verwendung
Die TYPO3-Association schätzt, dass TYPO3 CMS weltweit mehr als 500.000 Mal eingesetzt wird. TYPO3 stellt mittlere Anforderungen an die Leistungs- und Konfigurationsfähigkeit eines verwendeten Servers. Die Einarbeitungszeit eines Entwicklers beträgt erfahrungsgemäß mehrere Wochen bis Monate, für einen Autor/Redakteur, der eine Internetseite via TYPO3 betreut und bedient, je nach freigeschalteten Funktionen/Erweiterungen, wenige Minuten bis einige Stunden. Ein Entwickler, der mit TYPO3 eine Website einrichten möchte, muss sich in der Regel intensiv mit der Metasprache TypoScript beschäftigen.
Im Gegensatz zu kommerzieller Software gibt es bei den TYPO3-Produkten keinen Support durch den Hersteller bzw. den Entwickler. Der Support findet durch die Anwendergemeinde (Bugtracker, Foren und News-/Mailinglisten) und eine vergleichsweise große Anzahl an Dienstleistern statt, die sich auf die Verwendung von und Support für TYPO3 spezialisiert haben. Die Angebote reichen dabei von der Erstellung von Internetseiten auf Basis von TYPO3 oder Entwicklung spezifischer Erweiterungen bis zu Website-Hosting mit vorinstalliertem TYPO3 CMS.
Bedienung
TYPO3 CMS wird auf einem Webserver installiert und mit einem Webbrowser benutzt. Außer einem Browser ist für die Benutzung keine Zusatzsoftware erforderlich. Die Nutzung von TYPO3 gliedert sich in drei große Bereiche:
- die Erstellung des Website-Designs mittels Templates
- die Konfiguration von TYPO3 mittels TypoScript
- die Eingabe und Redaktion des Website-Inhalts
TYPO3 CMS besteht aus einem Backend, das der Pflege der Website dient, und einem Frontend, das die Website selbst darstellt.
Im Backend wird die Website verwaltet, TYPO3 konfiguriert, es werden Inhalte eingepflegt und bearbeitet. Ein WYSIWYG-Editor erlaubt es Anwendern ohne HTML-Kenntnisse, redaktionelle Tätigkeiten zu erledigen. Alternativ dazu kann die Bearbeitung von Inhalten auch direkt über das Frontend der Website vorgenommen werden. Diese Option bietet einen schnelleren Einstieg in das System.
Funktion und Architektur
Verwaltung der Inhalte, Rechte, Gestaltung und Datenbasis
Zu den Funktionen gehören unter anderem zeitliche Steuerung zum Ein- und Ausblenden von Inhalten, ein Rollen- und Rechtesystem (Benutzerverwaltung), eine Suchfunktion für statische und dynamische Inhalte, suchmaschinenfreundliche URLs, eine automatische Sitemap, Mehrsprachigkeit sowohl für das Backend als auch das mehrsprachenfähige Frontend.
Weitere, über verschiedene Zusatzmodule (sogenannte Erweiterungen) integrierbare Funktionen sind beispielsweise ein Gästebuch, ein Forum, das Verfassen und der Versand eines Newsletters oder eine Statistik für Seitenaufrufe. Videomaterial, Bilder, Texte, Tabellen, Animationen sowie externe Datenquellen können in TYPO3 CMS (zum Teil nur über extra Erweiterungen) verwaltet werden.
Templates, in denen Seitenaufbau und Formate definiert werden, erleichtern die Darstellung von Inhalten. Inhalte werden über frei konfigurierbare Eingabemasken eingegeben, zum Beispiel in Form des enthaltenen Rich-Text-Editors, der über eine an gängige Textverarbeitungen angelehnte, WYSIWYG-artige Oberfläche verfügt. Eine integrierte Bildverarbeitung ist vorhanden.
Der Objektmanager gestattet es, grafische Elemente zu skalieren, zu drehen, Rahmen hinzuzufügen etc., wobei TYPO3 CMS in Verbindung mit dem Bildkonverter ImageMagick und GDLib eine modifizierte Bilddatei im neuen Format erzeugt.
TYPO3 CMS wird intern über verschiedene PHP-Arrays gesteuert. Sie enthalten alle Informationen, die notwendig sind, um aus den in einer Datenbank gespeicherten Inhalten über TypoScript-Befehle HTML-Code zu erzeugen. In der Regel kann man fast jede Ausgabe und viele Backendeinstellungen über Änderungen der Konfiguration in den Arrays anpassen. Der dadurch während der Laufzeit der PHP-Skripte am Webserver benötigte Speicher ist deshalb von Bedeutung.
Die Inhalte und Parameter werden in einer relationalen Datenbank gespeichert und stehen unabhängig von dem jeweils verwendeten Template zur Verfügung. Dadurch kann das Erscheinungsbild einer Website theoretisch allein durch Austausch des Templates vollständig geändert werden, ohne die Inhalte anzufassen. Ebenso können dieselben Inhalte in unterschiedlichen Layouts oder Ausgabeformaten (zum Beispiel XML oder LaTeX) präsentiert werden.
Während in früheren Versionen die MySQL-Datenbank direkt angesprochen wurde, kann nun mit dem optionalen Database Abstraction Layer DBAL zwischen einer Anzahl gängiger SQL-Datenbanken gewählt werden, darunter als Open-Source-Alternative PostgreSQL, als kommerzielle Variante Oracle.
Ein integriertes Caching-System speichert Ergebnisse vorher definierter Datenbankaufrufe zwischen. Dadurch wird gerade bei hoch frequentierten Websites/ Internetseiten die CPU-Belastung gesenkt, die Anzahl der Datenbankabfragen verringert und die Seite im Endeffekt schneller ausgeliefert und angezeigt.
Gestaltungselemente
Gestaltung und Programmierung von Webseiten mit TYPO3 CMS erfolgt üblicherweise über folgende Elemente:
- Seitenbaum: Darstellung und Veränderung der Struktur und Eigenschaften der Seiten einer Website
- Konstanten: Universell gültige Konfigurationsparameter
- Template: Traditionell ein HTML-Gerüst mit einfachen Platzhaltern, sog. Markern (zum Beispiel ###MARKER###) und Bereichsmarkierungen, sog. Subparts (zum Beispiel <!– ###INHALT### Beginn –> … <!– ###INHALT### Ende –>); die von TYPO3 durch verschiedene Inhalte (Seitennavigation, Texte, Grafiken etc.) ersetzt werden bzw. als Unter-Template dienen. Daneben steht auch die eigenständige Template-Engine TYPO3 Fluid für Templating zur Verfügung.
- TypoScript: Mit dieser internen Konfigurationssprache wird beschrieben, wie TYPO3 die Inhalte ermittelt, formatiert und ausgibt. Die Ausgabe von Seiten ist auch ohne HTML-Templates – mit reinem TypoScript-Code – möglich.
- Erweiterungen: Die Funktion von TYPO3 erweiternde, zusätzliche Plug-ins
- PHP: Die Funktionen von TYPO3 CMS sind in PHP geschrieben und können von Anwendern, die besondere Zusatzfunktionen realisieren wollen, geändert oder ergänzt werden. Hervorzuheben ist hierbei die XCLASS-Funktionalität, die es ermöglicht, Klassen zu überschreiben. In der Regel werden aber Hooks bevorzugt eingesetzt.
TypoScript
Die Ausgabe von Inhalten im Frontend wird in erster Linie über die Metasprache TypoScript gesteuert. Genau genommen ist TypoScript eine Konfigurationssprache: Was in TypoScript definiert ist, wird in ein systemweites PHP-Array geparst. Dieses wiederum steuert, welche PHP-Funktionen beim Aufruf der Seite ausgeführt werden. Damit können Eigenschaften und Erweiterungen mit wenigen Handgriffen global für die gesamte Website verwaltet werden. TypoScript ist (bezogen auf die Syntax) objektorientiert.
Beispiel: Um überhaupt eine Ausgabe erzeugen zu können, ist mindestens das Erzeugen eines PAGE-Objektes nötig. Mit folgendem Code wird die formatierte Überschrift „Hello, world!“ ausgegeben:
page = PAGE page.10 = TEXT page.10.value = Hello, world! page.10.wrap = <h2>|</h2>
Ausgabe:
<h2>Hello, world!</h2>
Weitere wichtige TypoScript-Objekte sind CONTENT zum Auslesen von Inhalten aus der Datenbank und TEMPLATE zum Rendern eines HTML-Templates.
Spricht man von TypoScript, meint man in der Regel die in den TypoScript-Templates festgelegte Konfiguration zur Frontend-Ausgabe; es gibt aber auch Backend-Konfigurationen, die (abgesehen von wenigen Ausnahmen) mit der gleichen Syntax notiert werden. Sie werden User TSconfig (Einstellungen für einen Backend-Benutzer oder -Benutzergruppe) und Page TSconfig (Einstellungen für das Backend, die für einzelne Seiten und deren Unterseiten gelten) genannt und werden unter dem Begriff TSconfig zusammengefasst.
Für die Entwicklungsumgebung PhpStorm gibt es seit Mai 2014 ein Plugin, welches TypoScript als Sprache integriert. Dieses bietet neben Syntax-Highlighting auch Unterstützung für Auto-Vervollständigung, Auto-Formatierung und diversen anderen Funktionen. Neben jenem Plugin gibt es seit längerer Zeit auch eine Lösung von Jetbrains direkt, welche jedoch lediglich Syntax-Highlighting integriert.
Entwicklung
Geistiger Vater und ehemaliger Chefprogrammierer von TYPO3 ist der Däne Kasper Skårhøj. Die Entwicklung des Systems wird derzeit von Benni Mack geleitet.
Die Benutzeroberfläche wurde mit den Versionen 4.2 und 4.3 geändert, hier wurde das Backend überarbeitet und soll damit intuitiver sein. Im Rahmen von Version 4.4, die am 22. Juni 2010 veröffentlicht wurde, ist das Design auf Basis der Ergebnisse der sogenannten User Experience Week (T3UXW) aus dem Vorjahr speziell hinsichtlich der Benutzerfreundlichkeit erneut verbessert worden.
Zudem wurde mit dieser Version erstmals eine Demo-Website (genannt Introduction Package) ausgeliefert, die es Erstnutzern ermöglicht, sich schneller mit den Funktionen des Systems vertraut zu machen. Mit TYPO3 4.5 wurden die wichtigsten Bearbeitungsformulare neu strukturiert. In neueren Versionen wurde das Interface weiter aufgeräumt und unter anderem für die Darstellung auf mobilen Geräten optimiert.
Da die Version 5.0 über mehrere Jahre parallel zum 4.x-Zweig komplett neu entwickelt wurde, wurden neue Hauptversionen im Rahmen der TYPO3-Branch 4.x veröffentlicht. Die Nummerierung der Versionen wich aufgrund dieser Eigenheit von der sonst üblichen ab.
Seit Version 4.0 sind bereits mehrere Hauptversionen mit neuen Features veröffentlicht worden. Innerhalb der jeweiligen Unter-Zweige gilt der so genannte „Feature-Freeze“; es werden also mit kleineren Updates keine neuen Funktionen hinzugefügt, sondern lediglich Fehler behoben und Sicherheitslücken geschlossen.
Nachdem sich mehr und mehr zeigte, dass der ursprünglich als TYPO3 5.0 geplante Nachfolger sich von seinem Funktionsumfang und den möglichen Einsatzgebieten her nicht als Nachfolger eignet, sondern eher ein eigenständiges Produkt neben TYPO3 bildet, wurde im März 2012 beschlossen, diese Entwicklung auch durch einen anderen Namen deutlich zu machen: Als Arbeitstitel von TYPO3 5 wurde „Phoenix“ gewählt.
Der offizielle Name lautet nun „TYPO3 Neos“. Um Verwirrung bei der Bezeichnung der folgenden TYPO3-Releases zu vermeiden, folgte auf TYPO3 4.7 als nächste Version nicht TYPO3 5.0, sondern direkt TYPO3 6.0. TYPO3 Neos ist in einer eigenständigen Version 1.0 auf den Markt gekommen, die Versionsnummer 5 wird vollständig aus dem Versionszyklus des TYPO3-Projektes gestrichen.
Erweiterungen
Mit Hilfe von Erweiterungen kann der Anwender den Funktionsumfang von TYPO3 CMS erweitern oder dessen Verhalten ändern. Dabei können diese eigenständigen Programmteile Änderungen in praktisch allen Bereichen vornehmen, u. a. indem sie neue Inhaltselemente (beispielsweise zum Anzeigen eines Nachrichtensystems) einführen, dem Backend ein neues Modul hinzufügen oder Einfluss auf den Login-Prozess nehmen.
Verschiedene Arten
Einige Erweiterungen liegen der offiziellen TYPO3-CMS-Version bereits bei, weil sie besonders oft benötigt werden oder sogar für den Betrieb zwingend erforderlich sind. Diese Erweiterungen werden System Extensions genannt. Der Großteil der Erweiterung liegt aber im TER (TYPO3 Extension Repository), einem zentralen Server, von dem sich die Erweiterungen kostenlos herunterladen lassen. Diese Erweiterungen werden entweder TER Extensions oder Local Extensions genannt.
Eine andere Unterscheidung beleuchtet die Art der Funktionalität der Erweiterung und teilt diese in sogenannte Kategorien. Eine Erweiterung kann die Voraussetzungen für mehrere Kategorien gleichzeitig erfüllen, so dass es dem Entwickler obliegt zu entscheiden, welche Kategorie den Hauptzweck der Erweiterung am besten beschreibt. Die Kategorien sind im Einzelnen:
- Backend: Die Erweiterung beeinflusst das Verhalten des Backends, ohne notwendigerweise ein neues Modul einzuführen. Beispiel: ein WYSIWYG-Editor
- Backend Modules: Die Erweiterung führt ein neues Backend-Modul ein, das neue Verwaltungsfunktionen bietet. Beispiel: Integration von phpMyAdmin als Backend Modul
- Frontend: Die Erweiterung beeinflusst das Rendering des Frontends, ohne notwendigerweise ein neues Inhaltselement einzuführen. Beispiel: Suchmaschinenfreundliche URLs
- Frontend Plugins: Die Erweiterung führt ein neues Inhaltselement ein, häufig um ebenfalls von dieser Erweiterung eingeführte Datenstrukturen anzuzeigen. Beispiel: ein Nachrichtensystem
- Miscellaneous: Die Erweiterung kann nicht in eine der übrigen Kategorien sortiert werden.
- Services: Die Erweiterung ersetzt einen bestehenden Service. Beispiel: OpenID als Loginmechanismus
Installation und Wartung
Erweiterungen werden im Backend mit Hilfe des Extension-Managers installiert, der sich auch direkt mit dem TER verbinden kann, um die Erweiterung herunterzuladen. Er verwaltet dabei auch Abhängigkeiten, indem er beispielsweise auf eine fehlende zweite Erweiterung hinweist, die zum Betrieb einer ersten zu installierenden Erweiterung benötigt wird, oder indem er die Deinstallation einer Erweiterung verhindert, wenn andere installierte Erweiterungen auf dieser basieren. Der Anwender kann sich auch verfügbare Updates zu installierten Erweiterungen anzeigen lassen und diese direkt installieren.
Entwicklung
Es empfiehlt sich, die TYPO3-Erweiterung „Extension Builder“ zu benutzen, mit der ein Grundgerüst für die gewünschten Funktionen automatisch erstellt werden kann. Je nach Bedarf kann man damit Frontend- oder Backenderweiterungen auswählen. Das Erscheinungsbild der Formulare wird dabei in das Konfigurationsarray TCA eingebunden.
Die erstellte Erweiterung enthält Dateien mit fest vorgegebenen Namen, die automatisch aufgerufen werden, zum Beispiel ext_localconf.php, ext_tables.sql und ext_emconf.php. Der Programmierer muss nur noch einzelne PHP-Funktionen programmieren. Bei der Installation der Erweiterung überprüft TYPO3 automatisch, ob die Anforderungen der Erweiterung erfüllt sind (benötigte Pakete/Version etc.).
Der PHP-Quellcode, der bis TYPO3 Version 4.1 die Syntax der PHP-Version 4 und ab TYPO3 Version 4.2 wenigstens PHP 5.2 voraussetzt, besteht in der Regel aus Dateien, die jeweils eine Plug-in-Klasse enthalten. Die Programmierung ist je nach Autor objektorientiert, oder man verwendet die Klassen nur im Sinne von Modulen. Jede Klassendatei enthält eine Einbindung einer sogenannten XCLASS am Ende.
Diese können von Erweiterungs-Entwicklern mit einem bestimmten Namensschema selbst definiert werden und sollten von der Originalklasse abgeleitet sein. Sie werden immer anstelle der Originalklasse verwendet. Es wird jedoch empfohlen, Hooks anstelle von XCLASS zu verwenden. Damit wird eine bestehende Funktion über den Funktionsaufruf zu einer oder mehreren anderen Funktionen innerhalb von TYPO3-Erweiterungen beliebig erweiterbar gemacht.
Seit der Version 4.3 besteht die Möglichkeit, Erweiterungen auf Basis neuer Techniken zu programmieren, die von TYPO3 Flow portiert wurden. Dazu zählen unter Anderem das Model-View-Controller-Framework, das in TYPO3 4.3 in der Erweiterung extbase integriert wurde, und die Template Engine Fluid.
Kritik
Kritiker weisen auf die Komplexität des Systems hin sowie auf die damit verbundene lange Einarbeitungszeit für Administratoren. Der Quellcode ist bis Mitte 2012 auf über 450.000 Zeilen angewachsen; ein Resultat daraus ist, dass das System in manchen Bereichen als schwerfällig empfunden wird
Quelle: Wikipedia (https://de.wikipedia.org/wiki/TYPO3)