1 Inhaltsverzeichnis Inhaltsverzeichnis

Transcrição

1 Inhaltsverzeichnis Inhaltsverzeichnis
Analyse_von_Typo3
Hochschule:
Standort:
Studiengang:
Veranstaltung:
Betreuer:
Typ:
Themengebiet:
Autor(en):
Studienzeitmodell:
Semesterbezeichnung:
Studiensemester:
Bearbeitungsstatus:
Prüfungstermin:
Abgabetermin:
Fallstudienarbeit
Hochschule für Oekonomie & Management
Essen
Bachelor Wirtschaftsinformatik
Fallstudie / Wissenschaftliches Arbeiten
Prof._Dr._Uwe_Kern
Fallstudienarbeit
Content Management Systeme
Thorsten Lehmann, Maximilian Schmädicke, Sarah Steffen
Tagesstudium
2
begutachtet
1 Inhaltsverzeichnis
Inhaltsverzeichnis
• 1 Inhaltsverzeichnis
• 2 Abkürzungsverzeichnis
• 3 Abbildungsverzeichnis
• 4 Tabellenverzeichnis
• 5 Einleitung
• 6 Grundlagen
♦ 6.1 Content Management System
♦ 6.2 Typo3-Entstehung
♦ 6.3 Typo3-Community
♦ 6.4 Typo3 Association
• 7 Analysekriterien
♦ 7.1 Einsatzgebiet
♦ 7.2 Anforderungen
♦ 7.3 Funktionen
◊ 7.3.1 Frontend und Backend
◊ 7.3.2 Framework
◊ 7.3.3 Extensions
♦ 7.4 Sicherheit
♦ 7.5 Performance
• 8 Analyse und Bewertung von Typo3
♦ 8.1 Einsatzgebiet
♦ 8.2 Anforderungen
◊ 8.2.1 Webserver
◊ 8.2.2 Client
♦ 8.3 Funktionen
◊ 8.3.1 Frontend
⋅ 8.3.1.1 Template-Erstellung mit
TypoScript
⋅ 8.3.1.2 Navigationen / Menüs
1 Inhaltsverzeichnis
1
Analyse_von_Typo3
⋅ 8.3.1.3 Die Ausgabe von
Inhalten
⋅ 8.3.1.4 Dateien und Bilder
einbinden
⋅ 8.3.1.5 Datensätze ausgeben
⋅ 8.3.1.6 Fallunterscheidung
⋅ 8.3.1.7 Mail Formulare
⋅ 8.3.1.8 eigene PHP Scripts
⋅ 8.3.1.9 Links erzeugen
⋅ 8.3.1.10 Bildbearbeitung mit
dem GIFBUILDER
⋅ 8.3.1.11 Mehrsprachigkeit
⋅ 8.3.1.12 Caching
⋅ 8.3.1.13 Fazit
◊ 8.3.2 Backend
⋅ 8.3.2.1 Benutzerverwaltung Rechte
⋅ 8.3.2.2 Versioning und
Workspaces
⋅ 8.3.2.3 Weitere Konfigurationen
im Backend mittels TypoScript
⋅ 8.3.2.4 Fazit
◊ 8.3.3 Framework
⋅ 8.3.3.1 Der Typo3 Kern
⋅ 8.3.3.2 Table Configuration
Array
⋅ 8.3.3.3 Dateisystem
⋅ 8.3.3.4 Datenbank
⋅ 8.3.3.5 Hooks
⋅ 8.3.3.6 Fazit
◊ 8.3.4 Extensions
⋅ 8.3.4.1 Extension-Manager
⋅ 8.3.4.2 Extension Key
⋅ 8.3.4.3 Templavoila
⋅ 8.3.4.4 News-Plugin
⋅ 8.3.4.5 Fazit
♦ 8.4 Sicherheit
◊ 8.4.1 Grundlegendes
◊ 8.4.2 Im Install Tool
◊ 8.4.3 Im Kernsystem
◊ 8.4.4 Durch Extensions
◊ 8.4.5 Fazit
♦ 8.5 Performance
◊ 8.5.1 Caching Konzept
◊ 8.5.2 Datenbank-Tuning
◊ 8.5.3 Extensions-Verwendung
◊ 8.5.4 Fazit
• 9 Fazit und Ausblick
• 10 Fußnoten
• 11 Literatur- und Quellenverzeichnis
Inhaltsverzeichnis
2
Analyse_von_Typo3
2 Abkürzungsverzeichnis
Abkürzung
API
Bedeutung
Application Programming Interface
CAPTCHA Completely Automated Public Turing test to tell Computers and Humans Apart
CMS
Content Management System(e)
CSS
Cascading Style Sheet(s)
FTP
File Transfer Protocol
GIF
Graphics Interchange Format
HTML
Hypertext Markup Language
HTTP
Hypertext Transfer Protocol
ID
Identifikator
IIS
Internet Information Services
IRC
Internet Relay Chat
JPG / JPEG Joint Photographic Experts Group (Norm für Bilddateien)
LDAP
Lightweigt Directory Access Protocol
ODBC
Open Database Connectivity
PHP
PHP: Hypertext Preprocessor
PNG
Portable Network Graphics
SSL
Secure Sockets Layer
SQL
Structured Query Language
T3DD
T3CON
Typo3 Developer Days
Typo3 Conference
T3BOARD Typo3 Snowboard Tour
TER
Typo3 Extension Repository
TCE
Typo3 Core Engine
TCA
Typo3 Configuration Array
TTF
True Type Font
URL
Uniform Resource Locator
WYSIWYG What You See Is What You Get
3 Abbildungsverzeichnis
Nummer
2 Abkürzungsverzeichnis
Abbildung
3
Analyse_von_Typo3
1
Das Typo3 Logo
2
Typo3 Developer Days
3
Konzeptioneller Aufbau
4
Beispiel für TypoScript aus dem Standard-Template
5
Dem Attribut template des PAGE-Objektes wird ein FILE-Objekt übergeben
6
Als Beispiel das aktuelle Jahr
7
Einbindung von Cascading Style Sheets mit TypoScript
8
Anlegen einer Hauptnavigation
9
Typo3-Backend visualisiert das TCA
10
Extension Manager Auswahlliste
11
Beispiel eines CAPTCHA-Elements
4 Tabellenverzeichnis
Nummer
1
Beschreibung
Notwendige Tabellenfelder in der Datenbank
5 Einleitung
In Zeiten, in denen Datenbestände und Inhalte von Internetseiten fast unaufhaltsam zu wachsen scheinen, und
jeder Besucher erwartet, die angewählte Seite in seiner Landessprache lesen zu können, sind Content
Management Systeme nicht mehr wegzudenken. Große Unternehmen und kleine Vereine - alle haben ein klares
Ziel, sie möchten ihren Besuchern eine Internetseite präsentieren die aktuell und einfach zu bedienen ist. Dieses
Ziel verlangt nach einem gut entwickelten und möglichst flexiblen CMS (Content Management System).
Diese Fallstudie befasst sich mit dem CMS Typo3. Sie analysiert die Software anhand klar definierter Kriterien
hinsichtlich der Anforderungen, Funktionen, Sicherheit und Performance. Zum Abschluss werden die Ergebnisse
der einzelnen Analysekriterien zusammengefasst und ein Fazit gezogen.
6 Grundlagen
6.1 Content Management System
Nicht nur das Internet als Ganzes wächst und entwickelt sich zunehmend weiter durch die rasant steigende Zahl
an Webseiten, -angeboten und -inhalten, auch diese im einzelnen werden zunehmend komplexer und müssen
immer mehr Anforderungen gerecht werden. Spätestens im Web 2.0 haben statische Webseiten ausgedient; der
Administrationsaufwand für die manuelle Erstellung von einzelnen Inhalten stünde in keinem realistisch
vertretbaren Verhältnis zu den Standards des modernen, dynamisch-lebendigen World Wide Web; in dem
Orientierung am Individum des Users, Verfügbarkeit, Performance und Aktualtität immer wichtiger werden.
3 Abbildungsverzeichnis
4
Analyse_von_Typo3
Den meisten Webinhalten, die der User im Browser zu sehen bekommt, unterliegt kein handgeschriebener
Quellcode mehr, oft wird dieser erst beim Aufruf in Echtzeit generiert. Im Zentrum der Entwicklung von den
Anfängen des Internets zu diesem Status Quo steht die Trennung von Layout und Inhalt. Wird das Layout immer
nur kopiert und neuer Inhalt manuell eingefügt, entstehen Quellcode-Redundanzen, die dezentral bei
entsprechender Projektgröße nicht mehr zu verwalten sind. Es schleichen sich Fehler ein, das Design wird
inkonsistent und die Pflege der Inhalte stark erschwert, da der Autor bzw. Redakteur mit der Implementierung des
Designs ? sei es HTML in Verbindung mit CSS oder Vergleichbares ? vertraut sein muss, um es nicht
unbeabsichtigt zu verändern und die zu ändernden Elemente überhaupt zu finden. Es sind also gewisse Kenntnisse
in der Web-Formatierung und eventuell ?Programmierung notwendig, um Inhalte zu pflegen oder hinzuzufügen.
Dies schränkt den Kreis der Personen, die für die Betreuung und Erweiterung einer Web- oder Intranetseite
zuständig sein können, stark ein. Muss etwa ein kleines Team, oder gar nur ein einzelner Web-Entwickler die
Texte und Artikel etwa einer ganzen Zeitung in deren Webauftritt einpflegen, so ist die daraus resultierende,
enorme Zeitverzögerung kaum tragbar. Ein völlig neues Design zu implementieren ist aufwändig oder gar kaum
zu bewältigen, vor allem bei historisch gewachsenen Projekten an denen viele verschiedene Editoren beteiligt
waren. Bei einer Änderung des grundlegenden Designs muss jedes einzelne (z.B.) HTML-Dokument bearbeitet
werden, aber auch eine Änderung des Inhalts kann viel Arbeitsaufwand verursachen, da z.B. alle Menüs
redundant auf jeder einzelnen Seite vorhanden sind und jeweils angepasst werden müssen.
In praktisch jedem Bereich des heutigen Technologiezeitalters werden einst von Hand ausgeführte Abläufe
automatisiert. Im Falle des oben beschriebenen Problems wurden für diese Aufgabe CMS entwickelt. Konzepte
für ein System zur dynamischen Verwaltung von Inhalten unabhängig vom Design entstanden Mitte der 90er
Jahre. 1997 begann schliesslich der Däne Kasper Skårhøj mit der Entwicklung von Typo3, das mittlerweile eines
der bekanntesten und meistgenutzten Content Management Systeme ist. Auf allgemeiner Ebene sind folgende
grundlegende Eigenschaften von Content Management Systemen festzuhalten:
• Dezentralisierte Verwaltung und Pflege von textuellen und medialen Inhalten, durch die Nutzung von
Webserven standortunabhängig durchführbar
• Das Einfügen und Ändern von Inhalten erfordert keinerlei Kenntnisse, die über gewöhnliche
Textverarbeitung hinausgehen
• Die Arbeit mit dem CMS geschieht von einer Benutzerebene aus, es können also individuelle Rollen und
Rechte vergeben werden, die z.B. unauthorisierten Zugriff auf bestimmte Inhalte verhindern
• Das Design wird redundanzfrei und zentral angelegt und bleibt somit konsistent
• Navigationselemente werden automatisch generiert und müssen nicht nachträglich der Seitenhierarchie
angepasst werden
• Die Inhalte werden unformatiert in einer Datenbank abgelegt und können zentral abgerufen und gepflegt
werden. Die jeweilige Ausgabe kann der aktuellen Anforderung entsprechend formatiert werden, z.B. als
HTML-, XML- oder PDF-Datei, oder etwa kompatibel zu älteren Browsern oder als Druckausgabe
• Schneller, unkomplizierter Zugriff und ein einfaches Bearbeiten bzw. Hinzufügen von Inhalten, das von
praktisch jedem durchgeführt werden kann, gewährleisten eine hohe Aktualität der Web- oder
Intranetseite
• Die Nutzung von dynamischem Inhalt ist möglich, der User kann die Ansicht der Webseite in
persönlichen Einstellungen seine Vorlieben anpassen und bei interaktiven Modulen wie Foren, Umfragen,
etc. sogar selbst mitwirken[1]
6.1 Content Management System
5
Analyse_von_Typo3
6.2 Typo3-Entstehung
Seinen Ursprung hat Typo3 um das Jahr 1997 herum. Zu dieser Zeit war Content Management noch kein weit
verbreiteter Begriff und auch das Internet steckte noch in den Anfangsjahren. Des Weiteren war die
Notwendigkeit der Trennung von Inhalt und Layout einer Internetpräsens nur wenigen Personen wirklich
bewusst. Einer von diesen Personen war Kasper Skårhøj aus Dänemark. In Kooperation mit der Webagentur
Superfish.com entwickelte Skårhøj 1999 die erste Version von Typo3, damals aber noch als Typo1 bezeichnet.
Nachdem er aber erkennen musste, dass die Firma für die er arbeitete eine anderen Weg einschlagen wollte und
Typo3 nicht weiterentwickeln wollte, trennte er sich noch im selben Jahr mit allen Rechten und Lizenzen von
dem Unternehmen. Von nun an arbeitete er alleine an seinem Projekt und veröffentlichte im Jahr 2000 die erste
Beta-Version seines Programmes unter GNU-Open-Source-Lizenz. Schon in den folgenden Monaten wuchs sein
Unterstützerkreis enorm an. Der nächste Meilenstein in der Entstehung war dann die Veröffentlichung der
Version 3.5 im November 2002, mit dem damals neuen Extensions Manager, der es erstmals anderen
Programmierern ermöglichte eigene Erweiterungen für das CMS zu programmieren und in das System
einzubinden[2]. Im Jahr 2006 April folgte dann die Version 4.0. Die aktuelle Version von Typo3 (Version 4.3)
wurde im November 2009 veröffentlicht[3], für Ende 2010 wird dann die Version 4.5 mit weiteren
Verbesserungen erwartet. Als nächsten größeren Meilenstein plant die Typo3-Association die Fertigstellung und
Veröffentlichung der Version 5.x im Jahr 2011, welche komplett neu entwickelt werden soll und
dementsprechend eine komplett neue Architektur erhalten soll[4].
Abb.1: Das Typo3-Logo
Die Idee zu dem Namen Typo3 entstand Kasper Skårhøj zufolge dadurch dass er während seiner
Programmierarbeiten an diesem Projekt durch einen Tippfehler (englisch = ?typo?) einen großen Teil seines
zuvor geschriebenen Quellcodes verlor, seine im folgenden nachprogrammierte Lösung aber entscheidend besser
wurde, als die ursprüngliche Version. Die "3" in Typo3 wurde aufgrund des großen Erfolges der dritten Version
des CMS an das Typo angefügt[5].
6.3 Typo3-Community
Die Typo3-Community ist eine weltweite Community, die immer weiter wächst und laut Information der Typo3
Association zurzeit ca. 100.000 Mitglieder in über 80 Ländern auf der Welt umfasst.[6] Die meisten ihrer
Mitglieder kommen aktuell aus Deutschland. Die offizielle Community-Sprache ist Englisch. Zu den
Hauptaktivitäten der Typo3-Community gehört der Betrieb der Website und der angeschlossenen zahlreichen
E-Mail-Verteiler, über die sich die einzelnen Projektgruppen austauschen. Des Weiteren unterhalten sie über ihre
Website einen IRC (Internet Relay Chat), in dem sich die Mitglieder direkt bei Problemen helfen und über neue
Entwicklungen diskutieren können.[7] Auch ein Podcast vom Entwickler Kasper Skårhøj kann über die Website
der Community abonniert weden.[8]
Das Verhalten in der Community ist fest geregelt und besitzt ein klares Regelwerk an das sich die Mitglieder
halten sollen. Es setzt auf rücksichts- und respektvollen Umgang untereinander und ein gemeinschaftliches
Arbeiten an Projekten.[9]
Zu den jährlichen Community Veranstaltungen gehören die T3DD (Typo3-Developer Days), die T3CON
(Typo3-Conference) und die T3BOARD (Typo3 Snowboard Tour), bei der sich zahlreiche Entwickler zum
6.2 Typo3-Entstehung
6
Analyse_von_Typo3
Snowboarden treffen.[10]
6.4 Typo3 Association
Die Typo3 Association ist eine gemeinnützige Organisation, die aus einer Gruppe von Mitgliedern der
Typo3-Community und dem Urheber Kasper Skårhøj im November 2004 gegründet worden ist. Sie hat Ihren Sitz
in der Schweiz. Die Typo3 Association finanziert sich über Aufnahmegebühren und Jahresbeiträge von
Mitgliedern, sowie Erträgen aus Veranstaltungen und Schenkungen. Die wichtigste Aufgabe der Association ist
es, Typo3 konkurrenzfähig zu halten sowie die Transparenz und Effizienz für die Zukunft sicherzustellen.
Weitere Ziele sind:
• Kontinuierliche Weiterbildung der Typo3-Benutzer, um den sog. Quality of Service zu gewährleisten
• Die zukünftige Weiterentwicklung von Typo3 zu intensivieren und zu finanzieren, sowie die Anpassung
an die internationalen Standards
• Die Bekanntheit von Typo3 aufgrund der vielfältigen Einsatzmöglichkeiten und Fähigkeiten von Typo3
zu verbreiten (Promotion)
• Durchführung von Veranstaltungen, um Benutzer und Entwickler über Neuigkeiten zu informieren, z.B.
Typo3 Developer Days
Abb.2: Typo3 Developer Days
Grundsätzlich teilen sich die Mitglieder in drei unterschiedliche Typen auf:
• Active Members
In der Association gibt es einen sog. Lenkungsausschuss. Diese Gruppe bildet den Mittelpunkt der
Association. Sie besteht aus bestimmten Mitgliedern der Community, die bereits viele Jahre mit Typo3
konsequent gearbeitet haben. Die Aufgabe des Lenkungsausschusses ist es, das Ziel für die weitere
Entwicklung von Typo3 in die richtige Bahn zu lenken.
• Supporting Members
Die Mitgliedschaft ist für jeden möglich. Sie erfordert aber einen schriftlichen Antrag. Die Mitglieder
sind entweder Personen oder Unternehmen und sind verpflichtet, die Ziele und Zwecke des Vereins durch
ihre Maßnahmen zu billigen.
• Honorary Members
Hier handelt es sich um sogenannte Ehrenmitglieder, die im Laufe der Zeit einen wesentlichen Beitrag
zur Typo3 Association geleistet haben. Diese haben den Vorzug, das sie von der Beitragspflicht befreit
sind.
6.3 Typo3-Community
7
Analyse_von_Typo3
7 Analysekriterien
In diesem Abschnitt werden die Kriterien für die Analyse von Typo3 aufgezeigt und näher erläutert. Die
Aufteilung ist identisch mit der im nächsten Kapitel folgenden Analyse und Bewertung von Typo3.
7.1 Einsatzgebiet
Das Einsatzgebiet eines Content Management Systems sollte möglichst vielfältig sein und das System sollte sich
verschiedensten Anforderungen anpassen können. Im Zuge der Globalisierung und wachsenden Dynamik des
Internets sind die Zeiten von eigen zusammengestellten Individuallösungen vorbei. Eine Software wie Typo3
muss also möglichst viele unterschiedliche Anwendungsfälle abdecken können.
7.2 Anforderungen
Die Anforderungen an ein produktives CMS sind, sowohl was die Hardware betrifft, als auch für zusätzlich
benötigte Software sehr stark abhängig von der Größe bzw. Bekanntheit (hinsichtlich der Anzahl der Aufrufe) der
Internetseite.[11] Große Internetpräsenzen wie etwa ?Spiegel Online? mit mehreren tausend Besuchern pro Tag
benötigen meist eine viel umfassendere Infrastruktur, als der kleine Vereins-Auftritt vom örtlichen Sportverein,
die einige wenige Besucher pro Tag aufweisen können. Des Weiteren ist der Umfang der Website entscheidend
für die benötigten Anforderungen. Je mehr Informationen eine Website für Besucher zur Verfügung stellt, desto
mehr Hardware-Ressourcen werden benötigt. Auch die Zahl der aktiven Redakteure, welche regelmäßig die
Website erweitern und aktualisieren, beeinflusst stark die benötigten Ressourcen für das verwendete CMS. Eine
weitere Anforderung für ein modernes CMS ist eine möglichst Betriebssystem unabhängige Verwendbarkeit.
Zum Beispiel über einen beliebigen Internet-Browser. Dies erleichtert die Wartung und es muss keine zusätzliche
Software auf den Computern der Redakteure installiert werden. Diese zum Teil sehr stark variierenden
Anforderungen verlangen ein CMS, welches sich möglichst ohne Probleme an die vorgegebene Situation anpasst,
die vorhandenen Ressourcen möglichst effektiv nutzt und Erweiterungen der Infrastruktur ohne Ausfallzeiten
übernimmt.
7.3 Funktionen
7.3.1 Frontend und Backend
Das Grundprinzip von Content Management ist die Trennung von Layout (verwaltet im Frontend) und Inhalt
(verwaltet im Backend), dem sollte die Grundarchitektur jedes Conent Management Systems folgen. Im Frontend
werden die Layouts und dies betreffende Einstellungen bereitgestellt, während im Backend die Inhalte der
Webseite bzw. des Projekts gepflegt und administriert werden. Dieser Aufteilung folgend ergeben sich nun
gewisse Anforderungen an beide Enden, die zusammen schliesslich die Aufgaben des CMS erfüllen.
Da das Frontend für die Darstellung der Inhalte verantwortlich ist, müssen dort browserfähige Oberflächen für die
Webseite erstellt und verwaltet werden. Das bedeutet einserseits, dass Graphiken als Bestandteil des Layouts
bereigestellt und organisiert werden müssen, andererseits dass Vorlagen in Formatierungssprachen wie HTML,
oder Sprachen zur dynamischen Webdarstellung wie PHP, angelegt werden müssen, aus denen dann zusammen
mit den Inhalten aus dem Backend die fertigen Webseitenelemente generiert werden. Ebenso generiert werden
müssen Menüs, Permalinks, etc., um den Sinn der Automatisierung durch ein CMS gerecht zu werden, da diese
Dinge ja nicht mehr manuell erledigt werden sollen. Je mehr Elemente einer Webseite sich dynamisch erzeugen
7 Analysekriterien
8
Analyse_von_Typo3
lassen, desto höher ist die Qualität des CMS einzuschätzen. Gemäß den Anforderungen des Web 2.0 muss
zusätzlich noch die Einbindung multimedialer Inhalte ermöglicht werden, wie auch das Einlesen fertiger Layouts
und die Übertragbarkeit dieser. Ebenso muss im Hinblick auf die Globalisierung als Wettbewerbsfaktor die
Handhabung der Mehrsprachigkeit einer Webseite gewährleistet sein. Gerade dies war in Zeiten statischer
Webseiten eine große organisatorische Aufgabe, da für jede zusätzliche Sprache eine zusätzliche Kopie der
kompletten Webseite mit identischer Hierarchiestruktur etc. angelegt werden musste, und bei Änderungen alle
diese Website-Versionen parallel gepflegt werden mussten. Von einem guten CMS ist also zu erwarten, dass auch
dieser unnötige, manuelle Verwaltungsaufwand auf ein Minimum reduziert wird. In der folgenden Analyse wird
das CMS Typo3 also auf folgende Fähigkeiten geprüft und die entsprechenden Features nach Funktionsumfang,
Benutzerfreundlichkeit und Zweckmäßigkeit bewertet:
• Erstellung von HTML/PHP-Vorlagen (Templates) für Inhaltsseiten
• Datei- und Bilderverwaltung
• Dynamische Erzeugung von Menüs / Seitenelementen
• Mehrsprachigkeit der Webseite
Das Backend ist die Schnittstelle für die Eingabe der Inhalte und sollte daher keine Formatierungseingaben mehr
erwarten. Es sollte zudem möglichst so gestaltet sein, dass es einfach und schnell zu bedienen ist, um etwa
Aktualisierungen, News oder wichtige neue Publizierungen möglichst ohne großen Zeitaufwand veröffentlichen
zu können. Redakteure müssen selbstständig und ohne Unterstützung von Administratoren des CMS Inhalte
veröffentlichen können, deshalb benötigen sie spezielle Benutzerrechte die ihnen dies erlauben, ohne aber gleich
pauschal Administratorrechte mit zu vergeben. Dazu sollte ein Content Management System über ein zentral
verwaltbares Benutzersystem verfügen, das eine individuelle und erweiterbare Rechtevergabe ermöglicht. Ein
weiterer wichtiger Aspekt im Hinblick auf die Pflege und Verwaltung von Inhalten sind Möglichkeiten, wie die
Archivierung älterer Ausgaben bzw. Versionen der veröffentlichten Webseite und Teilen davon, sowie deren
Wiederherstellbarkeit. Gerade da die Änderungen an einzelnen Teilelementen eines Projekts entsprechender
Größe nicht immer durch eine einzelne Person und im gleichen Zeitraum durchgeführt werden, und jegliche
Übersichtlichkeit so schnell verloren geht, müssen die verschiedenen Änderungsstadien einzeln abgespeichert und
verfügbar und verwaltbar gemacht werden. Festzuhalten sind also folgende Punkte, die beim Backend genauer
betrachtet und hinsichtlich Funktionsumfang, Benutzerfreundlichkeit und Zweckmäßigkeit analysiert werden:
• Benutzersystem / Rechtesystem
• Archivierung / Versionierung
• Verwaltbarkeit
7.3.2 Framework
Typo3 ist modular aufgebaut. Neben den Komponenten wie Backend, Frontend und Webserver bildet das
Framework den Kern von Typo3. Ab Version 5.0 Codename Phönix, soll Typo3 eine komplett neue Architektur
basierend auf einem dafür entwickelten neuen Framework ?FLOW3? bekommen. Das Framework ist momentan
in der Alpha-Phase und soll als Basis für Typo3 5.0 dienen[4].
7.3.1 Frontend und Backend
9
Analyse_von_Typo3
Abb.3: Konzeptioneller Aufbau
Der flexible Aufbau ermöglicht die beliebige Erweiterung von Anwendungen und Funktionen. In der Analyse
werden die folgenden Punkte bezüglich Modularität näher betrachtet und beschrieben.
• Der Typo3 Kern
• TableConfiguration Array
• Dateisystem
• Datenbank
• Hooks
7.3.3 Extensions
Ein wichtiger Bestandteil von Typo3 sind die sogenannten Extensions (Plugins) oder auch Erweiterungen
genannt. Seitdem Typo3 mit den Erweiterungsfunktionalitäten ausgestattet wurde, haben dessen Bekannt- und
Beliebtheit extrem zugenommen. Um bereits entwickelte Extensions der Allgemeinheit zur Verfügung zu stellen,
gibt es einen zentralen Typo3 Extension Repository (TER), was einer der großen Vorteile von Typo3 ist. Hier
werden alle Extensions, Plugins und Module für das Frontend und Backend abgelegt. Dazu gehören auch ?shy
Extensions?, oder auch Systemextensions genannt. Innerhalb der Extensions unterscheidet man zwischen
folgenden Typen:
• System Extensions
• Globale Extensions
• Lokale Extensions
Mittlerweile sind umfangreiche Erweiterungen verfügbar, mit denen sich viele Probleme lösen lassen. Doch die
Extensions sind durchaus mit Vorsicht zu genießen, da nicht alle im produktiven Umfeld getestet worden sind. Ab
Version 4.0 werden Extensions hinsichtlich Sicherheitslücken geprüft, aber eine Bestätigung, dass diese keine
Fehler enthalten, ist das nicht. Auch die Kompatibilität muss berücksichtigt werden, da nicht alle Extensions unter
einer beliebigen Version funktionieren. Das kann zu lästigen Fehlermeldungen auf der Webseite oder zu einem
Blockieren des Backends führen.[12].
In der künftigen Analyse wird das Typo3 auf folgende Fähigkeiten überprüft und die Eigenschaften nach
Sicherheit und Benutzerfreundlichkeit bewertet:
• Extension-Manager
• Extension Key
• Templavoila
• News-Plugin
7.3.2 Framework
10
Analyse_von_Typo3
7.4 Sicherheit
Die Sicherheit ist ein zentraler Aspekt bei der Analyse und Bewertung vom Content Management Systemen. Kein
Benutzer möchte, dass außenstehende Personen unbefugt in sein produktives CMS eindringen und dort Daten
manipulieren oder sogar löschen. Zu den bevorzugten Angriffsmethoden auf ein CMS zählen:[13]
• XSS - Cross Site Scripting
Angreifer versuchen über präparierte Links Informationen (z.B. Zugangsdaten, Cookies oder
Formularinhalte) abzufangen.
• SQL-Injection
Angreifer versuchen eine Sicherheitslücke in der SQL-Datenbank zu nutzen, um Daten zu manipulieren
oder sogar die Kontrolle über die gesamte Datenbank zu bekommen.
• Brute-Force-Attacke/Wörterbuch-Angriff
Angreifer versuchen durch systematisches Ausprobieren oder durch Verwendung von Wörterbüchern
Kennwörter zu erraten.
• DoS-Angriffe (Denial of Service-Angriffe)
Durch eine übermäßig große Anzahl von regulären Anfragen soll der Webserver überlastet werden. Dies
wird meist zur Ablenkung von anderen Angriffsmethoden genutzt.
• DNS-Spoofing
Besucher gelangen aufgrund eines Fehlers in der Domain oder durch absichtliche Weiterleitung auf eine
manipulierte Internetseite, wo sie aufgefordert werden ihre Benutzerdaten einzugeben.
Durch die zahlreichen Angriffsmethoden sind die Anforderungen an ein CMS im Bereich der Sicherheit sehr breit
gefächert. Da sie nicht alle direkt das CMS angreifen, sondern auch versuchen andere, dem CMS angeschlossene
Systeme auszuschalten, kann es natürlich nicht die umfassende Sicherheit der gesamt Web-Infrastruktur
gewährleisten. Von einem guten CMS wird allerdings erwartet, dass es eine führende Rolle in der Abwehr
potentieller Angreifer übernimmt und Möglichkeiten bietet, diese Funktionen durch weitere Komponenten, auch
auf angeschlossene Systeme, modular zu erweitern. Des Weiteren sollten die Sicherheitsfunktionen möglichst
komfortabel zu konfigurieren sein und sich nahtlos an die vorhandene Infrastruktur anpassen können.
7.5 Performance
Die Performance einer CMS-Website ist ein ganz entscheidendes Kriterium für die Qualität eines Internetauftritts.
Wenn das Laden einer Website mehrere Sekunden braucht, sinkt beim User die Freude an dem interaktiven
Erlebnis. Um die Performance zu steigern, stehen dem Administrator verschiedenste Mittel zur Verfügung.
Gefragt ist, welche Parameter verändert werden müssen, um das System zu optimieren ohne dabei Änderungen an
den eigentlichen Programmresourcen vorzunehmen. Bei der Optimierung des Systems hinsichtlich der
Performance ist zu berücksichtigen, dass es schnell zu Wechselwirkungen kommen kann, da hier viele Systeme
ineinandergreifen.
7.4 Sicherheit
11
Analyse_von_Typo3
Von einem guten CMS ist also zu erwarten, dass es eine gute Performance bietet, also kurze, akzeptable
Antwortzeiten, um Wartezeiten sehr klein zu halten oder sogar zu vermeiden. Hierfür gibt es folgende diverse
Möglichkeiten, die in der Analyse näher betrachtet und beschrieben werden[14]:
• Caching-Konzept
• Datenbank-Tuning
• Extensions-Verwendung
8 Analyse und Bewertung von Typo3
8.1 Einsatzgebiet
Die Einsatzgebiete von Typo3 im Rahmen von Web-Lösungen sind breit gefächert. Genutzt wird das Tool von
Zeitungen, Verlagen, Firmen und Konzernen, Städten, Dienstleistern, bis hin zu Künstler- und
Selbstständigen-Portfolios, Clubs, Vereinen, privaten Fanseiten, etc. Typo3 dient zur Erstellung von Portalen,
Online Dokumentationen, Text- oder Bildarchiven, bis hin zu einfachen Webseiten deren Pflege lediglich
vereinfacht wird. Wie in der folgenden Analyse der Funktionen von Typo3 deutlich werden wird, ist dies ein Tool
mit nahezu unbegrenzten Möglichkeiten, das auf alle denkbaren Anforderungen skaliert werden kann. Das
Typo3-Projekt selbst hält einige anschauliche Anwendungsbeispiele bereit, bei denen das Tool in der Praxis
erfolgreich angewendet wurde. Darunter befinden sich die Webportale von wichtigen Konzernen wie DHL,
ThyssenKrupp Automotive AG, Volkswagen AG, EUROPCAR, Lufthansa AG, T-Online, Ford, Degussa - und
sogar die Berliner Philharmoniker. Diese und mehr Beispiele sind unter
http://www.Typo3.com/References.1249.0.html einzusehen.
8.2 Anforderungen
Wie von einem guten CMS erwartet, passt sich Typo3 an fasst jede vorhandene Infrastruktur an. Es ist sowohl
möglich, Typo3 als Testumgebung auf einem einzelnen Computer zu installieren (min. 512 MB
Arbeitsspeicher[11]), als auch auf einem Server-System für Internetauftritte großer Unternehmen. Um Typo3 in
einer einfachen Umgebung zu verwenden, hat die Typo3-Assocaition eine Mindestvorrausetzungen für den
Webserver und die Clients veröffentlicht[15].
8.2.1 Webserver
Für ein einfaches CMS mit Typo3 wird ein handelsüblicher Webserver benötigt. Die Hardwareanforderungen an
den Webserver sind sehr grob umrissen. Es wird hierfür ein Server mit einem modernen Prozessor und
mindestens 256 MB Arbeitsspeicher verlangt, wobei die Größe der späteren Datenbank den benötigten
Arbeitsspeicher sehr stark beeinflusst. Als Betriebssystem kann sowohl Windows, Linux als auch Mac verwendet
werden. Für den Webserver wird entweder Apache oder IIS (Internet Information Services) von Microsoft
benötigt und als Middleware wird von der Typo3-Association PHP4 empfohlen. Die Datenbank des CMS soll auf
MySQL basieren. Zusätzlich werden noch als Erweiterungen für die Datenbank Funktionen wie ODBC (Open
Database Connectivity) oder LDAP (Lightweight Directory Access Protocol) benötigt[15].
7.5 Performance
12
Analyse_von_Typo3
8.2.2 Client
Da Typo3 an sich eine Web-Anwendung ist und dadurch nicht auf den einzelnen Clients installiert werden muss,
sind auch hier die die Anforderungen an die benötigte Hard- und Software eher oberflächlich beschrieben. Laut
der Typo3-Association wird zum Arbeiten mit Typo3 lediglich ein relativ moderner Computer mit einem der
verbreiteten Betriebssysteme (z.B. Windows, Linux oder Mac) benötigt. Als installierte Software wird einzig und
allein ein einfacher, graphischer Browser verlangt[15].
8.3 Funktionen
8.3.1 Frontend
Wie bereits in der Ausarbeitung der Analysekriterien erwähnt, gilt bei Typo3 die strenge Trennung zwischen
Front- und Backend, also zwischen Konfiguration des Layouts auf der einen, und Verwaltung der Inhalte auf der
anderen Seite. Betrachtet wird zunächst das Frontend hinsichtlich der zuvor erarbeiteten Analysekriterien:
• Erstellung von HTML/PHP-Vorlagen (Templates) für Inhaltsseiten
• Datei- und Bilderverwaltung
• Dynamische Erzeugung von Menüs / Seitenelementen
• Mehrsprachigkeit der Webseite
Die Template-Erstellung in Typo3 ist, wie für diese Software üblich, sehr komplex und bedarf langer, und
gründlicher Einarbeitung. Im folgenden werden die vom Programm bereitgestellten Features zur
Template-Erstellung deshalb ohne große Detailtiefe umrissen, um einen Überblick über Funktionen und Abläufe
zu geben:
8.3.1.1 Template-Erstellung mit TypoScript
Abb.4: Beispiel für TypoScript aus dem Standard-Template
Neue Templates werden im Frontend im Modul Web, Template im obersten Hierarchieknoten des Seitenbaums
angelegt. Der Seitenbaum ist eine Darstellung der verschachtelten Ebenen der Webseite, also Haupt- und
Unterseiten, etc. Im selben Modul kann der Quelltext des erzeugten Standard-Templates eingesehen werden, der
noch nicht sehr umfangreich ist (siehe Abb. 4).[16]
Dies ist keine gängige Websprache wie PHP oder XML, sondern eine völlig neue, die nicht an vorher genannte
angelehnt ist. TypoScript wurde speziell im Rahmen der Entwicklung von Typo3 entwickelt und ist
folgendermaßen defniniert: "TypoScript ist eine reine Konfigurationsmöglichkeit. Es ist keine
Programmiersprache"[17]. TypoScript besitzt keine für Programmiersprachen charakteristische
Kontrollstrukturen wie Iteration oder Selektion, sondern dient lediglich der Konfiguration des Seiten-Layouts
sowie Einstellungen bezüglich Typo3 selbst. Diese Konfigurationen werden beim Generieren der Inhaltsseiten in
eine PHP-Datei übernommen, die ein Browser dann anzeigen kann. Analog dazu wird das Backend über TSconfig
(TypoScriptConfiguration[18]) konfiguriert. Auf die genaue Syntax von TypoScript soll nun nicht weiter
eingegangen werden, da dies den Rahmen der Analyse sprengen würde. Als kurzer Überblick und beispielhafte
8.2.2 Client
13
Analyse_von_Typo3
Einführung in TypoScript wird nun als nächstes betrachtet, wie ein für Webseiten-Erstellung übliches
HTML-Template in das TypoScript-Template integriert wird. Dem TypoScript-Template wird zunächst über ein
File-Objekt das HTML-Template übergeben (siehe Abb. 5).
Abb.5: Dem Attribut template des PAGE-Objektes wird ein FILE-Objekt übergeben
Die HTML-Datei ist so präpariert, dass dynamische Inhalte durch "Platzhalter" ersetzt sind, sich an deren Stelle
sogenannte Marker befinden, erkennbar an drei # vor und nach der Bezeichnung, zB. ###YEAR###
Dies betrifft einzelne Werte, wie z.B. das aktuelle Datum, das etwa in einer Fußzeile eingefügt werden kann.
Sollen direkt ganze Bereiche dynamisch eingebunden werden, wird dies durch sogenannte Subparts
gekennzeichnet, die ähnlich aufgebaut sind, und zudem an die gewöhnlichen HTML- bzw.
JavaScript-Kommentare erinnern:
<!-- ###CONTENT### begin --> .... <!-- ###CONTENT### end -->
Die Subparts werden dann vom TypoScript-Template aus gefüllt (siehe Abb.6).
Abb.6: Als Beispiel das aktuelle Jahr
Marker und Subparts werden beim Generieren der Webseite durch die entsprechenden Inhalte aus dem
Datenbanksystem ersetzt. Dieses wird von Typo3 selbst verwaltet und enthält textuelle Inhalte sowie zusätzliche
Informationen zu deren Struktur (zB. Hierachie im Seitenbaum). Bei Inhalten, die als Dateien vorliegen, wird
intern der entsprechende Pfad im Dateisystem hinterlegt[19]. Damit die Marker durch dynamische Inhalte ersetzt
werden können, sind sie mit den entsprechenden Objekten im TypoScript-Template verknüpft, denen der
jeweilige Feldname aus der Datenbank übergeben wird. Es gestaltet sich allerdings unter Umständen äußerst
schwierig, den betreffenden Feldnamen herauszufinden[20].
Auch Cascading Style Sheets (CSS) zur zentralen Formatierung von Webdarstellungen werden nicht wie üblich in
den HTML-Quellcode, sondern in das TypoScript-Template eingebunden (siehe Abb.7).
Abb.7: Einbindung von Cascading Style Sheets mit TypoScript
Auch die Erzeugung von Menüs wird im TypoScript-Template angelegt (genaueres zur Menübehandlung unter
9.3.1.2 Navigationen / Menüs [1]). Dynamisch erzeugte Menüs werden zunächst als temporäre Objekte angelegt
und dann in die den Markern entsprechenden Objekte "reinkopiert" (siehe Abb.8).
8.3.1.1 Template-Erstellung mit TypoScript
14
Analyse_von_Typo3
Abb.8: Anlegen einer Hauptnavigation
Um Inhalte in einem fertig erstellten Template anzeigen zu können, muss noch eine Konfiguration der Extension
css_styled_content in das Template eingebunden werden, aus dem dann ein temporäres Objekt erzeugt wird, das
noch dem entsprechenden Subpart im HTML-Template zugewiesen werden muss[21]. Der gesamte Ablauf der
Template-Erstellung ist wieder ein gutes Beispiel für die hohe Komplexität, die das gesamte System von Typo3
auszeichnet, und für einen Erstanwender schnell zu einer schwer überwindbaren Hürde werden kann. Als
Profi-Tool gesehen, bieten die vielschichtigen Konfigurationsmöglichkeiten allerdings ein sehr großes Potential
für professionelle und vor allem kommerzielle Web-Lösungen. Es wird so gut wie nicht auf programmseitige
Voreinstellungen oder ähnliches zurückgegriffen, der Layout-Aufbau liegt also von der Programmierbasis (sofern
man die Arbeit mit TypoScript als Programmieren im weiteren Sinne auffassen kann) damit völlig in der Hand
des Entwicklers.
Um mit TypoScript zu arbeiten, kann auf folgende Dokumentationen zurückgegriffen werden[22]:
• TypoScript-Templates:
http://Typo3.org/documentation/document-library/core-documentation/doc_core_tstemplates/
• TypoScript Syntax and In-Depth Study:
http://Typo3.org/documentation/document-library/core-documentation/doc_core_ts/current/
und als genrelle Referenz:
• TSref: http://Typo3.org/documentation/document-library/references/doc_core_tsref/4.1.0/view/
Ein wichtiges Hilfsmittel bei der Arbeit mit TypoScript sind Konstanten, mit denen bestimmte Werte aus dem
Quelltext selbst ausgelagert werden können. Die Konstanten werden beim Anlegen des Templates definiert, zum
Aufrufen der entsprechenden Werte muss dann nur noch der Name der jeweiligen Konstante im TypoScript
Quelltext eingefügt werden[23]. So lassen sich unter anderem mehrfach verwendete Werte zentral pflegen. Dieses
Konzept ähnelt dem Gebrauch von Variablen (benannten Speicherplätzen) in Programmiersprachen. Des weiteren
verfügt TypoScript, ähnlich einer Programmiersprache, über die Möglichkeit Bedingungen auszudrücken, auch
mithilfe logischer Operatoren[24]. TypoScript Konfigurationen werden im Seitenbaum hierarchisch nach unten
8.3.1.1 Template-Erstellung mit TypoScript
15
Analyse_von_Typo3
weitervererbt, können allerdings auf den unteren Ebenen überschrieben werden. Die Überschreibungshierarchie in
TypoScript selbst funktioniert ähnlich, die Abarbeitung läuft strikt von oben nach unten und die zuletzt
angegebene Konfiguration überschreibt alle vorangehenden[25]. Zur besseren Organisation und Verwaltung
können TypoScript-Templates auch in Dateien ausgelagert werden. Dafür gibt es drei Möglichkeiten[26]:
• durch ein spezielles Tag im Setup
• mit einem TypoScript-Template aus einer Extension
• mit einem statischen Template aus einer Extension
Für die Erleichterung der Arbeit mit TypoScript-Templates steht das Modul Web, Template zur Verfügung. Das
Modul enthält folgende Funktionalitäten[27]:
• TypoScript-Templates bearbeiten (Info/Modify)
• TypoScript-Struktur betrachten (Object Browser)
• Template-Organisation überblicken (Template Analyzer)
• Konstanten bequem ändern (Constant Editor)
Eines der wichtigsten Felder im Template-Datensatz ist das Setup-Feld, in dem die sogenannten Toplevel
Objects[28] konfiguriert werden. Dies sind die Objekte, die im Seitenbaum noch zu sehen sind, wenn ausnahmslos
alle Knoten komprimiert sind, also die hierarchisch am höchsten stehenden Objekte. Die wichtigsten darunter
sind:
• CONFIG ? grundlegende Einstellungen für eine Seite
• CONSTANTS ? Globale Marker; funktionieren wie die zuvor erwähnten TypoScript Konstanten als
Platzhalter, werden jedoch nur an dieser speziellen Stelle verwendet
• PAGE ? dieses Toplevel Objekt erzeugt die HTML-Tags <html>, <head> und <body>, ohne die eine
Webseite gar nicht angezeigt werden kann. Ohne das PAGE-Objekt existiert die generierte Seite also
faktisch nicht, und das Frontend gibt eine Fehlermeldung aus.
• META ? Eigenschaft meta des PAGE-Objekts, erzeugt die Meta-Tags der Webseite
• PLUGIN ? steuert die Frontend Plugins
8.3.1.2 Navigationen / Menüs
Navigationen werden in Typo3 ausgehend von der Struktur des Seitenbaums generiert, da dieser ja dem
hierarchischen Aufbau der Seitenelemente entspricht. So hat der Betrachter der Webseite letztendlich den selben
Überblick über diese wie der Administrator im Frontend. Ausgangsbasis für jedes Menü ist das Objekt HMENU
("H steht für hierarchisch"[29]), dem für jede Ebene ein Menütyp zugewiesen wird, zB. TMENU (Textmenü),
GMENU (graphisches Menü)[29]. Die Darstellung der Menüpunkte kann dynamisch von deren Zustand abhängig
gemacht werden, also ob sie z.B. gerade ausgewählt sind, oder nicht, oder ob sie selbst noch Unterpunkte haben
oder nicht, oder ähnliches. Diese optionalen Zustände müssen aktiviert werden, ehe sie definiert werden können;
für jedes Menü muss allerdings zwingend ein Normalzustand - also die default-Werte für die generelle
Darstellung - definiert sein um die Anzeige zu ermöglichen. Das Objekt HMENU hat zwei wichtige
Eigenschaften: entryLevel gibt an, welche Ebene des Seitenbaums die Toplevel-Ebene des Menüs wird, falls man
zB. Haupt- und Unternavigation getrennt anlegen möchte; die Eigenschaft special dient zur Behandlung von
Spezialfällen der Menüdarstellung[30]. Neben Textmenü und graphischem Menü gibt es noch das Layer-Menü,
sowie die Möglichkeit, das Menü als Dropdown-Feld darzustellen[31]. Mit der Funktion optionSplit können
Menüpunkte unterschiedlich behandelt werden, je nachdem wo sie in der Reihenfolge stehen. Sind die Punkte
beispielsweise durch Trennelemente verbunden, so muss dieses ja beim ersten und letzten Punkt ausgelassen
werden. Mit optionSplit können für die Menüliste die Bereiche first, middle und last definiert und unterschiedlich
konfiguriert werden[32].
8.3.1.2 Navigationen / Menüs
16
Analyse_von_Typo3
8.3.1.3 Die Ausgabe von Inhalten
Jenseits der generellen Konfiguration einer Seite sind die wichtigsten Objekte innerhalb eines
Template-Datensatzes natürlich die Inhaltsobjekte, die der Anzeige der Inhaltselemente, also des Content, dienen.
Hier findet nun die Verknüpfung des Templates mit den tatsächlichen Inhalten aus Datenbank und Dateisystem
statt, die Inhaltsobjekte erzeugen aus dem ihnen übergebenen Text in Verbindung mit der vorgegebenen
Darstellungsweise den entsprechenden HTML-Quellcode[33]. Inhaltselemente können in einer sogenannten
Content Object Array zusammengefasst werden, um z.B. gemeinsam einen Marker zu ersetzen [34]. Auch das
zuvor erwähnte Objekt HMENU ist ein Inhaltsobjekt und daher kann ein Menü überall dort platziert werden, wo
im Template der entsprechende Marker gesetzt ist.
8.3.1.4 Dateien und Bilder einbinden
Um Inhalte aus Dateien einzulesen oder aber auch Bilder einzubinden, wird das Objekt FILE verwendet. Dieses
Objekt selbst besitzt die Eigenschaft file, in der ein Dateipfad angegeben wird. Wie die Datei nun vom Frontend
behandelt wird, hängt von deren Typ ab. .txt bzw. .html-Dateien etwa werden direkt als Text bzw. Quellcode
ausgegeben, während bei Bildformaten wie .jpg, .jpeg, .gif, .png, etc. automatisch ein <img>-Tag erzeugt wird.
Das FILE-Objekt ist also eher generalistisch ausgelegt, dadurch aber äußerst flexibel. Auch wenn sich mit dem
FILE-Objekt Bilder anzeigen lassen, ist es geeigneter, dafür auf das IMAGE-Objekt zurück zu greifen. Auch das
IMAGE-Objekt besitzt die Eigenschaft file, der ein Dateipfad zu dem entsprechenden Bild übergeben wird, sowie
eine Reihe weiterer Eigenschaften, die zur Formatierung des Bildes dienen. Über den sogenannten Gifbuilder
können auch Graphiken dynamisch erzeugt werden (zB. sinnvoll bei graphischen Menüs und den entsprechenden
Seitenüberschriften), dazu später mehr.[35]
8.3.1.5 Datensätze ausgeben
Statt Inhalte aus Dateien einzulesen, können diese auch aus Datenbanken abgefragt werden, was gerade bei
größeren Projekten eine der Dateieinbindung übergeordnete Bedeutung hat. Dazu stehen die Objekte CONTENT
und RECORDS zur Verfügung, mit denen SQL-Abfragen durchgeführt werden können.[36]
8.3.1.6 Fallunterscheidung
Das Objekt CASE bietet die Möglichkeit, das Fehlen von Programmiersprachen-typischen Features bei Typo3,
wie etwa der Fallunterscheidung, zu umgehen. Es ersetzt also quasi die üblichen switch-case Konstrukte, die aus
Java, PHP, etc. bekannt sind. So kann die Darstellung bei der Ausgabe eines Inhaltselements von Bedingungen
abhängig gemacht werden, die zum Zeitpunkt des Webseiten-Aufrufs bzw. der Eingabe des Inhalts durch den
Redakteur variieren können.[37]
8.3.1.7 Mail Formulare
Mit dem Objekt FORM können Mailformulare erzeugt werden. Auch hier bieten sich äußerst umfangreiche
Konfigurationsmöglichkeiten, es kann aber zur Vereinfachung auch auf einen Formularassistenten
zurückgegriffen werden, der die korrekte Syntax des erstellten Formulars generiert.[38]
8.3.1.3 Die Ausgabe von Inhalten
17
Analyse_von_Typo3
8.3.1.8 eigene PHP Scripts
TypoScript-Templates werden bei der Frontend-Generierung in PHP-Arrays umgewandelt, und somit besteht die
angezeigte Webseite letztendlich aus dynamisch generiertem PHP-Code. TypoScript bietet aber auch die
Möglichkeit, eigene PHP-Skripte einzubinden. Dazu dienen die Objekte USER, USER_INT, und PHP_SCRIPT.
Diese können direkt im TypoScript-Quelltext genutzt werden, es wird jedoch empfohlen, eigene Funktionalitäten
über eigene Extensions einzubinden, da diese dann bei der Installation der Extension automatisch ins TypoScript
eingefügt werden und dies nicht mehr manuell behandelt werden muss.[39]
8.3.1.9 Links erzeugen
TypoScript bietet mit der Funktion typolink die Möglichkeit, Links automatisch zu erzeugen. Diese Eigenschaft
besitzt unter anderem das Objekt TEXT, und dies ist auch die naheliegendste Nutzungsmöglichkeit. Der Funktion
wird die ID der Zielseite übergeben, und für die Anzeige des Links gibt die Funktion den Seitentitel der Zielseite
zurück, damit der Benutzer später weiss, worauf er klickt. Der große Vorteil der dynamischen Linkerzeugung
durch typolink im Gegensatz zum manuellen Anlegen der Links im HTML-Template ist, dass auch dynamische
Parameter, wie zB. Spracheinstellungen, mitgegeben werden können und die Verlinkung von Seiten so um einiges
flexibler wird[40]. Des weiteren besteht zB. die Möglichkeit, über die Funktion parseFunc HTML-Tags in den aus
der Datenbank ausgelesenen Inhalten bzw. den Backend-Eingaben zu parsen, und so zB. jeden Absatz mit einem
<p>-Tag zu versehen oder ähnliches[41].
8.3.1.10 Bildbearbeitung mit dem GIFBUILDER
Typo3 bietet die überaus praktische Möglichkeit, .gif-Graphiken automatisch aus Bild- und Textdaten zu
erzeugen. Dies ist beispielsweise bei graphischen Menüs sinnvoll, lässt sich aber auf vielerlei Weise anwenden.
Der Gifbuilder benötigt zunächst ein Objekt vom Typ imgResource, dem eine Bilddatei übergeben wurde, sowie
eine gültige Schriftdatei, auf die das System zugriff hat (der Sinn, Texte als .gif-Bilder darzustellen ist ja meist,
Schriftarten darstellen zu können, die der Webseiten-Besucher selbst nicht installiert hat. Da dies in der Regel
Schriftarten betrifft, die nicht als Standard gelten, müssen für diese die entsprechenden (z.B.) .ttf-Dateien
hinterlegt sein. Das Gifbuilder-Objekt besitzt einige wichtige Unterobjekte[42]:
• TEXT ? der Text, der auf dem Bild erscheinen soll. Auch für dieses Unterobjekt existieren viele weitere
Konfigurationsmöglichkeiten.
• SHADOW ? wird dieses Objekt auf ein entsprechendes TEXT-Objekt referenziert, so lassen sich Schatten
unter dem angegebenen Text erzeugen
• EMBOSS ? wird genauso genutzt wie SHADOW, allerdings werden Schatten in mehrere Richtungen
erzeugt, um den Eindruck einer Stempelung darzustellen
• OUTLINE ? erzeugt eine Umrandung des Textes
• BOX ? erzeugt ein Rechteck mit festgelegter Größe und Farbe
• IMAGE ? fügt ein weiteres Bild in das Bild ein
• EFFECT ? Effekte wie zB. Drehung, Änderung der Gammawerte, etc. können auf das Bild angewendet
werden
• WORKAREA ? definiert einen Bereich innerhalb des Bildes, vergleichbar mit einem Auswahl-Tool
• CROP ? beschneidet das Bild auf die Maße der angegebenen Workarea
• SCALE ? skaliert die Graphik
8.3.1.8 eigene PHP Scripts
18
Analyse_von_Typo3
8.3.1.11 Mehrsprachigkeit
Eine der großen Herausforderungen an dynamische Webseiten in im heutigen Internet ist die Verfügbarkeit der
Inhalte in verschiedenen Sprachen. Dies kann in Typo3 auf zwei verschiedene Arten gelöst werden: Entweder
wird für jede Sprache ein komplett neuer Seitenbaum mit unterschiedlicher Struktur angelegt, oder es wird im
selben Seitenbaum für jede Seite eine neue Sprachvariante erzeugt. Bei letzterer Methode besteht der Vorteil
darin, dass beim Wechsel der aktuellen Sprache durch den Benutzer die aktuelle Seite nicht verlassen bzw. auf die
Root-Seite zurück gesprungen werden muss[43]. Zunächst müssen die entsprechenden Sprachpakete für Typo3 für
Front- und Backend installiert werden; die Verwaltung der Sprachen ist im Extension Manager möglich. Als
Standard-Zeichensatz wird UTF8 empfohlen, da dieser bereits zB. arabische, asiatische und kyrillische Zeichen
enthält[44]. Im TypoScript-Template ist nun das Toplevel Objekt CONFIG entscheident, denn es enthält
Konfigurationen zur sprachspezifischen Ausgabe. Allerdings sollten diese Einstellungen standardmäßig auch für
einsprachige Seiten gesetzt werden, ebenso muss eine Standardsprache angegeben werden. Sollen alle Sprachen
im selben Seitenbaum verwaltet werden, muss Typo3 zunächst für alle gewünschten Sprachen konfiguriert
werden, diese sind dann im gesamten Seitenbaum verfügbar. Über das Modul Web, Page kann dann für jede
einzelne Seite eine alternative Version in einer der vorkonfigurierten Sprachen angelegt werden[45]. Die
übersetzten Texte werden dann von den Redakteuren im Backend eingepflegt. Das Modul Web, Info bietet
zusätzlich eine Übersicht über alle Übersetzungen, so können zB. fehlende Übersetzungen schneller ausfindig
gemacht werden. Für den Sprachwechsel kann dann, wie zuvor beim generellen Anlegen von Navigationen
beschrieben, mit HMENU ein entsprechendes Menü erzeugt werden, z.B. mit Flaggen oder als reines Textmenü.
Des Weiteren kann festgelegt werden, was geschehen soll falls eine bestimmte Übersetzung nicht vorhanden ist.
So z.B. ob auf eine besimmte Seite oder eine andere Sprache zurückgesprungen werden soll, oder die
entsprechende Seite gar nicht erst im fremdsprachigen Menü auftauchen soll. Dies kann direkt auf Seitenebene
geschehen, aber auch für jeweils einzelne Inhaltselemente. Wird für jede Sprache ein eigener Seitenbaum
angelegt, müssen all diese Einstellungen nur einmal im TypoScript-Template der Root-Seite vorgenommen
werden.
8.3.1.12 Caching
Die dynamische Erzeugung der Inhaltsseiten in einem System wie Typo3 ist sehr rechenintensiv. Damit der
Betrachter der Webseite nicht unter Geschwindigkeits-Einbußen zu leiden hat, werden solche Seiten, deren
Erscheinungsbild sich nicht permanent ändert (also solche, die nicht interaktiv oder ähnliches sind), in einem
Caching-Mechanismus abgespeichert und statisch abgerufen. Typo3 speichert solche Seiten in Caching-Tabellen,
wobei auch Besonderheiten wie Spracheinstellungen, Benutzergruppen und Seitentypen berücksichtigt werden,
und ggf. eine jeweils eigene Variante der Seite erzeugt wird. Ebenso werden in den Caching-Tabellen neben dem
eigentlichen Quellcode auch Metainformationen der Seite abgespeichert, z.B. Konfigurationseinstellungen von
TypoScript[46]. Das Caching kann standardmäßig von Typo3 automatisch durchgeführt, oder durch Einstellungen
im Backend manuell gehandhabt werden. Ebenso ist es möglich, einzelne Bereiche einer Seite vom Cachen
auszunehmen, falls eine statische Anzeige nicht sinnvoll ist. In diesem Fall wird im gecachten HTML der Marker
des entsprechenden Bereichs einfach belassen, so dass er beim Aufruf der Seite trotzdem dynamisch ersetzt wird.
Dies lässt sich alles über TypoScript einstellen[47].
8.3.1.13 Fazit
Die obig besprochenen Funktionalitäten sind nur ein sehr geringer Ausschnitt der umfassenden Möglichkeiten,
die das Frontend in Typo3 zu bieten hat. Für die Entwicklung von kleinen bis hin zu großen, kommerziellen
Webseiten sind also praktisch kaum Grenzen gesetzt. Gerade für hochprofessionelle Anforderungen ist Typo3
hier bestens gerüstet. Für Anfänger ist die Fülle der Funktionen und der zu tätigenden Einstellung allerdings etwas
erschlagend, und für sehr kleine Webseiten ist das Tool auch eher ungeeignet, da der Administrationsaufwand die
8.3.1.11 Mehrsprachigkeit
19
Analyse_von_Typo3
Projektgröße übersteigen würde. Im folgenden werden analog zum Frontend die Funktionalitäten des Backends
betrachtet.
8.3.2 Backend
Das Backend dient als Eingabeschnittstelle für textuelle und mediale Inhalte. Als Analysekriterien für diesen
Bereich wurden zuvor festgelegt:
• Benutzersystem / Rechtesystem
• Archivierung / Versionierung
• Verwaltbarkeit
Zunächst wird das System der Benutzerverwaltung im Backend von Typo3 betrachtet:
8.3.2.1 Benutzerverwaltung - Rechte
Zurückgreifend muss zunächst erwähnt werden, dass bei der Benutzerwaltung in Typo3 grundsätzlich zwischen
Administratoren und Redakteuren unterschieden wird, was quasi analog zur Differenzierung zwischen Front- und
Backend angelegt ist. Administratoren verwalten das Frontend mit allen Konfigurationen innerhalb von Typo3
und geniessen die umfangreichsten Rechte innerhalb des Systems. Einzig das Install Tool ist durch ein weiteres
Passwort vor unauthorisiertem Zugriff geschützt. Die Redakteure bedienen das Backend im Hinblick auf die
Pflege von Inhalten, haben also in Abgrenzung zu den Administratoren etwa den Status von Usern. Insbesondere
dürfen Redakteure nicht auf die allgemeine Benutzerverwaltung zugreifen und keinen eigenen PHP-Code
einspeisen. Ersteres verhindert, dass Benutzer ihre eigenen Rechte erweitern; letzteres soll Missbrauch
verhindern, da über PHP-Scripts Manipulationen an Datenbanken sowie das Anlegen neuer
Administrator-Benutzer möglich ist. Die Rechtevergabe erfolgt jeweils auf der Ebene von Benutzergruppen, da
aber auch die Verwaltung von Untergruppen möglich ist, sind der individuellen Rechtevergabe quasi keine
Grenzen gesetzt. Der Administrator kann für eine Benutzergruppe festlegen, welche Module, Tabellen bzw.
Datensätze und welche Seitentypen den Redakteuren in der jeweiligen Gruppe zugänglich sind. Über sogenannte
excludefields[48] können sogar spezifische Felder eines Datensatzes freigegeben bzw. gesperrt werden. Es ist
sinnvoll, je nach Rang eines Redakteurs nur Zugriff auf einzelne Unterseiten zu gewähren oder, bei in der
Verantwortlichkeit höher positionierten Redakteuren, auch z.B. Haupt- und Verzweigungsseiten zugänglich zu
machen. Dazu wird über DB Mount[49] der Einstieg in den Seitenbaum festgelegt; hierarchisch übergeordnete
Seitenelemente sind gesperrt, untergeordnete können bearbeitet werden. Analog dazu erlaubt der File Mount den
entsprechenden Zugriff im lokalen Dateisystem. Ist ein Benutzer nun einer Gruppe zugeordnet, können ihm die
gewünschten File Mounts und DB Mounts zugeordnet werden bzw. auf individueller Benutzerebene neue
hinzugefügt werden. Damit die vergebenen Rechte auch wirksam werden, müssen Benutzer bzw.
Benutzergruppen noch den Elementen im Seitenbaum zugeordnet werden. Die Rechte pro einzelner Seite
(anzeigen, bearbeiten, löschen und anlegen), bzw. der im Seitenbaum darunterliegenden, können jeweils für eine
zugeordnete Gruppe, einen Benutzer, der als "Besitzer" der Seite zugeordnet wurde (quasi ein
Seiten-Administrator), und das Profil Everybody (=jeder) vergeben oder verweigert werden. Die Rechte für
Everybody betreffen pauschal alle Nutzer, die die betreffende Seite über den ihnen zugewiesenen DB Mount
sehen können, hier ist also höchste Vorsicht geboten. Der entsprechende lokale Dateizugriff kann auch über
sogenannte Home-Verzeichnisse geregelt werden, denen jeweils einzelne Benutzer oder Benutzergruppen
zugeordnet werden können, und auf die auch nur diese zugreifen können, damit sich Zugriffsrechte nicht
überschneiden oder gegenseitig behindern. [50]
Die Backend-Benutzverwaltung in Typo3 ist somit sehr solide und mit Anpassungsmöglichkeiten in großer
Detailtiefe ausgestattet. Auch große Projekte können so adäquat verwaltet werden und die Beteiligung einer
8.3.1.13 Fazit
20
Analyse_von_Typo3
großen Zahl an Mitwirkenden ist so sehr gut handelbar. Für kleine Projekte ist diese Fülle von Funktionen
allerdings viel zu umfangreich und das Bedienen ggf. zu aufwendig. Ob es im Sinne der Skalierbarkeit auf kleine
Projekte mit wenig Mitwirkenden Sinn macht, einfach pauschal den Administrator-Account zu benutzen oder sich
für ein alternatives CMS zu entscheiden, sei dahingestellt. Je größer das Projekt wird, desto mehr schrumpft der
Verwaltungsaufwand mit Typo3 gegenüber dem, der bei manueller Handhabe bestünde. Und daher hat Typo3 in
diesem Punkt die Anforderungen an ein stabiles und nützliches Content Management System erfüllt.
8.3.2.2 Versioning und Workspaces
Ein weiterer Punkt der zuvor genannten Analysekriterien ist die Verwaltung von Änderungen und Updates der
Inhalte. In Typo3 war diese Anforderung zunächst mit dem Konzept der Versionierung gelöst, welches dann von
Workspaces abgelöst wurde. Der Sinn von Workspaces ist es, die Entwicklungsumgebung von der
Live-Umgebung (dem letztendlich veröffentlichten Resultat) klar und sicher zu trennen. Das zeitgesteuerte
Ändern, Updaten oder Verbergen von Inhalten und kompletten Seiten (-Hierarchien) kann so effektiver und
zentraler genutzt werden, als von den einzelnen Seiten selbst aus. Dies bietet sich vor allem bei einem großen
Änderungsumfang an, da alle im Workspace ausgeführten Änderungen gleichzeitig aktualisiert bzw.
zurückgenommen werden können, was zu einer Gruppierung der einzelnen Änderungen zu einer jeweiligen
eigenen Entwicklungsstufe der Webseite (quasi einer Zusammenfassung zu einer Version, daher der Begriff
?Versioning?) führt. Die Grundlage der Funktionalität von Workspaces ist das Prinzip der Versionierung, welches
als Extension in Typo3 seit Version 3.8 implementiert ist. Offiziell wird dies folgendermaßen charakterisiert:
"Versionierung ist ein System, das für beliebige Datensätze (Seiten, Inhalte etc) alle Änderungen nachvollziehbar
mit einer Historie abspeichert und alte Zustände rekonstruierbar macht."[51]. Die Versionierung kann auf Ebene
von Inhaltselementen, Seiten und Seitenbäumen geschehen. Ab Typo3 Version 4.0 wird dieses System der
Verwaltung von Änderungen durch Workspaces erweitert. Workspaces (dt. "Arbeitsfläche") erlauben eine
Automatisierung vieler Arbeitsschritte, die bei der einfachen Versionierung noch vom Redakteur selbst
durchgeführt werden mussten, was es unter Umständen erspart, diesen extra dafür qualifizieren zu müssen. Auch
können innerhalb von Workspaces eigene Rechte-Hierarchien angelegt werden, die z.B. die abgestufte Freigabe
von Inhalten ermöglichen. Des weiteren können Workspace-Intern einzelne Module an- und abgeschaltet werden.
Es existieren drei verschiedene Workspace-Arten[52]:
• LIVE Workspace (default): so erscheint die fertige Seite online
• DRAFT Workspace (default): hier werden Entwürfe angelegt und evtl. Layouts, Projekte etc. getestet
• USER Workspace: müssen im Workspace Manager manuell angelegt und konfiguriert werden
Als Ausgangskonfiguration für alle weiteren Workspaces dient zunächst der LIVE Workspace, dieser wiederum
entspricht dem direkten Ändern der publizierten Version, wie es ohne Versioning der Fall wäre. Änderungen im
DRAFT und in USER Workspaces müssen jedoch immer explizit publiziert werden, damit sich keine Versehen
oder Fehler einschleichen die der Betrachter der Seite dann sofort sieht. Im LIVE Workspace selbst gibt es eine
solche Kontrolle nicht, und deshalb sollte gründlich geprüft werden, wer die Rechte erhält um dort arbeiten zu
können; denn dies gleicht einer "Operation am offenen Herzen", da direkt in der öffentlichen Version der
Webseite gearbeitet wird. Im USER Workspace existieren drei verschiedene Rollen, über die einem Redakteur
bestimmte Rechte zugewiesen werden: Owner, Reviewer und Editor[53]. Je nach Rolle können die Redakteure
dann Seiten, Elementen, etc. die Bearbeitungsstufen Editing, Review, Reject und Publish[53] vergeben. Letztere
gilt für Elemente die zur Veröffentlichung vorgesehen sind. Das Veröffentlichen selbst obliegt den jeweiligen
Workspace-Ownern, aber auch allgemein User mit Zugriff auf den LIVE Workspace können Inhalte
veröffentlichen. Für das Publizieren stehen nun zwei Möglichkeiten zur Verfügung. Publish bewirkt im
klassischen Sinne, dass die bearbeitete Version aus dem DRAFT Workspace in den LIVE Workspace übernommen
wird und diese folglich übereinstimmen. Es gibt jedoch noch die Möglichkeit swap, welche bedeutet, dass die
Versionen aus LIVE und DRAFT Workspace ausgetauscht werden[54]. Da die beiden Versionen beliebig wieder
zurück getauscht werden können, bietet sich dies bei testweisen oder temporären Änderungen an, da ein Roll-back
8.3.2.1 Benutzerverwaltung - Rechte
21
Analyse_von_Typo3
so einfacher ist und nicht wie bei publish auf die archivierte, vorherige LIVE-Version zurückgegriffen werden
muss. [55]
Auch hier erfüllt Typo3 die zuvor aufgestellten Anforderungen; Änderungen können archiviert und in
verschiedenen Workspaces sogar völlig voneinander getrennt behandelt werden. Allerdings ist die Bedienung des
Workspace Managers, wie für Typo3 üblich, wieder recht unübersichtlich und bedarf einer längeren Einarbeitung,
was für ein Projekt natürlich Zeitaufwand bedeutet. Für Profis bietet sich allerdings wieder jede erdenkliche
Konfigurationsmöglichkeit, und das Anpassungsvermögen der Software zeigt deren grundlegende Vorteile; denn
auch in diesem Abschnitt konnte wieder nur grob umrissen werden, was beim Arbeiten mit Workspaces alles
möglich ist, da die Fülle der Konfigurationsmöglichkeiten sonst den Rahmen sprengen würde.
8.3.2.3 Weitere Konfigurationen im Backend mittels TypoScript
Natürlich hören die Features des Typo3 Backends nicht mit Workspaces und Benutzerverwaltung auf, Typo3
bietet auch hier für die versierten Profis und großkommerziellen Anwender jede Menge Möglichkeiten, das
System den individuellen Anforderungen anzupassen. Dies geschieht wieder über die software-eigene Sprache
TypoScript, die bereits in der Analyse des Frontend vorgestellt wurde. Denn auch im Backend können zwar
bestimmte Einstellung und Vorgaben mittles TypoScript konfiguriert werden, allerdings mit der kleinen
Einschränkung, dass sowohl Konstanten als auch Bedingungen nicht verwendet werden dürfen (als alternative
dient die TypoScript-ähnliche Konfigurationsvariante TSConfig). Einstellungen mit TypoScript können auf Userund auf Seitenebene gesetzt werden, wobei die Einstellungen der Userebene alle anderen überschreiben. Die
Einstellungen auf Seitenebene gelten wieder für die entsprechende Seite selbst sowie alle in der Seitenhierarchie
darunter befindlichen, sofern für diese keine eigenen Einstellungen festgelegt wurden.[56] Mögliche
Konfigurationen sind beispielsweise[57]:
• Ausblenden von Optionen im Funktionsmenü der Module
• Nur eingesetzte Inhaltsspalten im Seiten-Modul anzeigen
• Einschränkung der Tabelle für neue Datensätze
• Ansichten im Extension Manager einblenden
• Cache von bestimmten Seiten löschen, falls Datensätze an anderer Stelle verändert wurden
• Benutzer, Gruppen und Rechte für neue Seiten festlegen
• Kopieroptionen festlegen
• Mögliche Elemente für Auswahlfelder einschränken
• Seitentyp umbenennen
• Frontend-Session an andere Domain weitergeben
• Konfiguration für Frontend und Backend gemeinsam nutzen
8.3.2.4 Fazit
Das Backend in Typo3 erfüllt alle nötigen Anforderungen, die zuvor als Analysekriterien festgelegt wurden, und
auch die Trennung der Verwaltung von Layout und Inhalt ist vollends gewährleistet, denn von der Layout
Konfiguration bekommen die Redakteure nichts mit. Sie haben lediglich Inhalte in fertige Eingabemasken
einzupflegen und die minimalen Formatierungsmöglichkeiten, die ihnen gegeben sind, sind überschaubar und
orientieren sich am WYSIWYG-Prinzip. Somit ist eines der wichtigsten Ziele von Content Management
Systemen erfüllt: die Herauslösung von IT-spezifischen Kompetenzen aus dem redaktionellen Bereich.
8.3.2.2 Versioning und Workspaces
22
Analyse_von_Typo3
8.3.3 Framework
8.3.3.1 Der Typo3 Kern
Der Kern oder auch Core genannt beinhaltet die Extensions und die Extensions API. Die sogenannte Typo3 Core
Engine (TCE) ist dafür zuständig, die Abfragen der Datenbank zu kontrollieren, erforderliche Querverknüpfungen
zu berücksichtigen und Datenbewegungen zu steuern. Diese zentrale Steuerung stellt eine konsistente
Datenhaltung sicher. Natürlich ist es auch möglich direkt auf Tabellen der Datenbank zuzugreifen und deren
Inhalte zu verändern. Das sollte aber bei Tabellen die zum Kern gehören vermieden werden, da sonst notwendige
Informationen nicht mehr konsistent sind.
Innerhalb der TCE gibt es zwei wichtige Datenstrukturen, sogenannte Arrays. Diese sind zur Programmierung im
Backend notwendig. Sie beinhalten einerseits die Tabellendaten die von der TCE zu verwalten sind, andererseits
alle benötigten Aktionen oder Befehle. Es sollte darauf geachtet werden, dass Datenänderungen auf diese
Strukturen immer über das Backendmodul erfolgen.
Daten-Array:
• tablename - Name der Tabelle eines Datensatzes.
• uid - Datensatz der bearbeitet werden soll
• fieldname - Name des Tabellenfeldes
Befehls-Array:
• tablename - Name der Tabelle eines Datensatzes
• uid - Datensatz der bearbeitet werden soll
• command - der durzuführende Befehl
• value - Konfiguration für den Befehl
Um die TCE für die eigene Programmierung zu nutzen, ist die Anmeldung eines Backend-Users erforderlich.
Nachdem die Anmeldung erfolgt ist, und die TCE instanziiert ist, wird erst das Daten-Array dann das
Befehls-Array geladen und anschließend die TCE initialisiert. Anschließend werden die im Array enthaltenen
Befehle abgearbeitet[58].
8.3.3.2 Table Configuration Array
Um in einem Backend Formulare anzupassen, gibt es die Möglichkeit, die Eigenschaften einer Seite graphisch
festzulegen oder zu verändern (Metadaten, Ressourcen usw.). Die Konfiguration, wie z.B. ein Textfeld oder eine
Dropdownbox aussehen soll, wird im Table Configuration Array (TCA) abgelegt. Es ist als eine zusätzliche
Schicht zwischen der Datenbank und dem Backend anzusehen. Dadurch können z.B. Validierungen ermöglicht
werden, die bei einer direkten Datenbanktransaktion nicht möglich wären.
Das TCA wird in einer hierarchischen Struktur abgespeichert. Darin werden alle Metadaten wie Tabellennamen,
Spaltennamen, Datensatz-Beziehungen, Merkmalsausprägung der Backendmasken und viele weitere
Informationen abgelegt. Alle zusätzlichen Erweiterungen am TCA sind in eigenen Extensions abzulegen. Eine
genaue Beschreibung aller Daten mit deren Bedeutung ist ausführlich in der Typo3-Core-API beschrieben. Da die
Strukturen im TCA sehr umfangreich sind, wird hier auf eine genaue Betrachtung aller einzelnen Bestandteile
nicht näher eingegangen[59].
8.3.3 Framework
23
Analyse_von_Typo3
Abb.9: Typo3-Backend visualisiert das TCA
8.3.3.3 Dateisystem
Die Struktur des Filesystems von Typo3 wirkt auf den ersten Blick etwas unübersichtlich. Betrachtet man es
etwas genauer, so kann man zwischen den Bereichen Source und Instanz unterscheiden. Der Source-Bereich ist
innerhalb einer Version immer identisch und bildet den Typo3 Kern. Die Dateien in diesem Ordner sollten nicht
verändert werden und zur Sicherheit auf ReadOnly gesetzt werden. Folgende Ordner werden im Bereich Source
bei der Installation erzeugt:
• misc ? Im diesem Ordner liegen Dateien, die für Typo3 nicht unbedingt
erforderlich sind. Daher können die Dateien oder der Ordner gelöscht werden.
• Typo3 ? Hier liegen Dateien, worüber das Backend und wichtige Extensions zur Verfügung gestellt
werden. Der Unterordner /ext sollte aber Schreibrechte besitzen um globale Extensions installieren zu
können.
• t3lib ? In diesem Ordner liegen alle Bibliotheken die für Typo3 erforderlich sind.
Der Bereich der Instanz enthält alle spezifischen Änderungen und Konfigurationen. Das erforderliche
Installations-Paket wird auch als Dummy-Paket bezeichnet. Folgende Ordner werden im Bereich der Instanz
erzeugt:
• fileadmin - Hier können User beliebige Dateien ablegen. Die Ordnerstruktur kann über das Backend
verwaltet werden.
• Typo3conf ? Dieser Ordner muss wie alle Unterordner mit Schreibrechten versehen werden. Er beinhaltet
die Konfiguration einer Instanz sowie alle lokalen Extensions.
• Typo3temp ? Ordner in dem das Frontend und das Backend temporäre Dateien ablegen[60].
8.3.3.2 Table Configuration Array
24
Analyse_von_Typo3
8.3.3.4 Datenbank
Egal welche Datenbank innerhalb von Typo3 eingesetzt wird (Oracle, MySQL, Postgre-SQL), müssen gewisse
Konfigurationen erfüllt sein, damit Typo3 die Tabellen entsprechend verwalten kann. Allerdings wird MySQL am
häufigsten in Verbindung mit Typo3 eingesetzt, weil bei anderen Datenbanken keine ausreichenden Erfahrungen
vorhanden sind. Die erste Voraussetzung ist, dass die Tabellen im TCA bekannt sein müssen. Des Weiteren
müssen in einer Tabelle gewisse Felder vorhanden sein:
Tabelle1: Notwendige Tabellenfelder in der Datenbank
Feld
pid
uid
title
tstamp
sorting
deleted
Beschreibung
Zeigt auf die uid der Seite die den Datensatz beinhaltet
Eindeutige Identifizierung des Datensatzes
Name des Datensatzes
Zeitstempel des letzten Inserts, Update oder Delete
Sortierung von Datensätzen
Kennzeichen für das Löschen eines Datensatzes
Die Installation der notwendigen Tabellen im Typo3-Umfeld wird mit dem Installtool durchgeführt. Der Aufruf
des Installtools kann mit dem Parameter Compare versehen werden. Bei Angabe des Parameters wird ein
Vergleich zwischen der vorhandenen Datenbankstruktur und Soll-Datenbankstruktur gemacht. Als Ergebnis
daraus werden dem Benutzer Vorschläge gemacht, welche Tabellen und Felder angelegt oder verändert werden
sollen. Überflüssige Tabellen und Felder werden auch mit aufgelistet. Die unbedingt erforderlichen Tabellen sind
in vordefinierten Standard SQL-Files abgelegt und werden bei der Basis-Installation angelegt. Die erforderlichen
Verknüpfungen (Beziehungen) von Tabellen werden durch das TCA konfiguriert. Verknüpfungen von einem
Datensatz zu einem Element einer Seite werden dort ebenfalls hinterlegt. Auch sogenannte m:m-Beziehungen
können heute in Typo3 über Zwischentabellen realisiert werden[61].
8.3.3.5 Hooks
Hooks können dazu verwendet werden, vorhandene mehrere Funktionen (Extensions) gleichzeitig zu erweitern,
ohne den eigentlichen Code nicht zu verändern. Bevor sie benutzt werden können, müssen sie allerdings vorher
vom Administrator eingerichtet werden. Hooks werden immer dann benutzt, wenn die Ansprüche durch die
gegebenen Mittel von Typo3 nicht abgedeckt werden können[62].
8.3.3.6 Fazit
Das Framework ist im Allgemeinen modular aufgebaut. Die Grenzen zwischen dem Typo3 Standard und den
projektspezifischen Konfigurationen sind in allen Analysekriterien sehr gut abgegrenzt. Hinsichtlich Updates und
Migration auf neue Versionen ist jedoch sehr viel Erfahrung und spezielles Wissen erforderlich.
8.3.4 Extensions
8.3.3.4 Datenbank
25
Analyse_von_Typo3
8.3.4.1 Extension-Manager
Der Extension-Manger dient, wie der Name schon sagt, zum Verwalten der Extensions im Typo3-Umfeld. Der
Extension-Manager wird über das Backend-Modul gestartet und mit ihm können Extensions installiert und
deinstalliert werden. Zusätzlich können neue Extensions vom Extension Repository heruntergeladen werden.
Welche Extensions angezeigt werden, hängt von dem ausgewählten Menüpunkten ab. Die Liste beinhaltet
folgende Auswahlkriterien:
Abb.10: Extension Manager Auswahlliste
• Loaded Extensions
Anzeige aller installierten Extensions
• Install Extensions
Anzeige aller installierbaren Extensions
• Import Extensions
Hier werden alle verfügbaren Extensions angezeigt, die vom Extension Repository heruntergeladen
werden können
Die Liste der installierten Extensions ist nach Modulen sortiert. Hier wird unter anderem der Name, der Extension
Key, die Versionsnummer und der Entwicklungsstand dargestellt. Zusätzlich wird in einer Spalte dargestellt, ob
für die ausgewählte Extension Dokumentationen vorhanden sind. Mit einem Klick auf den Namen der Extension,
gelangt man zur Detailansicht. Hier werden umfassende Informationen zur Extension dargestellt. Möchte man
neue Extensions herunterladen, so wird zuerst eine Liste aller verfügbaren Erweiterungen vom Extension
Repository geladen. Aus Sicherheitsgründen werden hier nicht alle Extensions angezeigt, sondern nur die, die
eine Sicherheitsprüfung bestanden haben. Sollen alle anderen auch angezeigt werden, so wird das über die Option
?Enable unsupported Extensions? ermöglicht. Dem Benutzer steht hier eine gut handhabbare graphische
Oberfläche für die Verwaltung der Extensions zur Verfügung. Der Punkt Sicherheitsaspekte wurde hier
berücksichtigt und gut umgesetzt:[63]
8.3.4.2 Extension Key
Da Extensions weltweit entwickelt werden, ist die Vergabe eines eindeutigen Schlüssels notwendig, dem
sogenannten Extension Key. Er macht die Namensvergabe für jede Extension eindeutig und verhindert damit
Namensduplizierungen. Für die Namensvergabe gibt es folgende Konventionen, die aber leider nicht immer
eingehalten werden.
8.3.4.1 Extension-Manager
26
Analyse_von_Typo3
• Generell sollten keine Unterstriche verwendet werden
• Der Name sollte nicht länger als 10 Zeichen sein
• Großbuchstaben sind zu vermeiden
• Der vergebene Name sollte die Aufgabe der Extension wiederspiegeln
• Den Name frühzeitig festlegen, da eine nachträgliche Änderung sehr aufwendig sein kann
Die Namenskonventionen werden bei der Registrierung im Extension Repository nach den obengenannten
Namenskonventionen und Duplikaten geprüft. Um den Namen einer Extension zu registrieren, muss man
angemeldet sein. Das Extension Repository ist in Verbindung mit den Extension Keys eine sichere und sinnvolle
Komponente die eine fundamentale Basis für das Typo3 bilden:[64].
8.3.4.3 Templavoila
Mit der Erweiterung Templavoila lassen sich Designvorlagen und Datendefinition per TypoScript
zusammenfassen. D.h. die Erstellung komplexer Layouts ist damit ohne Einschränkungen möglich. Es kann wie
alle Extensions heruntergeladen und installiert werden. Setzt aber den Extension-Key static_info_tables voraus.
Templavoila ist einem Wizard ausgestattet der eine Basisinstallation durchführt. Templavoila ist flexibel und
bietet mehr Freiraum als die bisherigen Methoden[65].
Es sollte jedoch vor der Erstellung einer neuen Webseite entschieden werden, ob man die herkömmliche Methode
verwendet oder sich für Templavoila entscheidet, da eine Umstellung an vorhandenen Webseiten sehr aufwendig
ist[66].
8.3.4.4 News-Plugin
Eine der populärsten Extensions für Typo3 ist das sogenannte News-Plugin. Es wird dazu verwendet, um aktuelle
Mitteilungen zu erstellen. Mit seinen vielfältigen Funktionalitäten ist es eine sehr leistungsfähige Erweiterung. Oft
wird das Plugin für Podcasts oder Blogs benutzt. Die Erweiterung muss zuerst mit dem Extension-Manager vom
Extension Repository mit dem Extension-Key tt_news heruntergeladen werden. Bei der anschließenden
Installation werden zusätzliche Tabellen angelegt und der Cache gelöscht. Damit das Plugin jedoch überhaupt
funktionieren kann, muss noch ein statisches Template eingebunden werden, welches den notwendigen
TypoScript-Code liefert. Nach der Installation kann das Plugin unter Verwendung von sogenannten Wizards als
Seiteninhalt angelegt werden. Eine nachträgliche Änderung des Seiteninhalts ist generell möglich. Der generierte
Container kann anschließend für ein Frontend-Plugin verwendet werden. Um das Plugin zu konfigurieren stehen
umfassende Beschreibungen zur Verfügung. Die Einstellungen des News-Plugin können jederzeit über das
graphische Template, den Constant Editor geändert werden. Eine Implementierung des News-Plugin bis hin zu
fertigen News-Beiträgen ist durchgehend mit der graphischen Benutzeroberfläche möglich. Für Experten ist aber
auch eine manuelle Konfiguration per TypoScript möglich, diese setzt aber fundierte Programmierkenntnisse
voraus. Auf die einzelnen Konfigurationsmöglichkeiten wird hier nicht eingegangen, da sie sonst den Rahmen der
Analyse sprengen würde[67].
8.3.4.5 Fazit
Die hier vorgestellten Extensions sind nur eine kleine Auswahl, zeigen aber, dass die vorhandenen Erweiterungen
mit implementierten Wizards eine hohe Benutzerfreundlichkeit bieten. Die unbegrenzten Gestaltungs- und
außerordentlich guten Konfigurationsmöglichkeiten sind ein Plus für Typo3. Die Oberflächen sind nicht
überladen, was ebenso zur Benutzerfreundlichkeit beiträgt. Hinsichtlich Sicherheit können z.B. Felder, die von
den Webautoren nicht benötigt werden, über Benutzerrechte entzogen werden. Der Sicherheitsmechanismus der
8.3.4.2 Extension Key
27
Analyse_von_Typo3
Extensions ist durchdacht und trägt dazu bei, die Sicherheitsanforderungen an ein CMS zu erfüllen.
8.4 Sicherheit
8.4.1 Grundlegendes
Typo3 bietet viele Möglichkeiten um sich gegen Angriffe von außerhalb zu schützen. Doch wie bei allen
Systemen ist der Benutzer selbst ein entscheidender Faktor, wie sicher ein CMS wirklich ist. Von den
verschiedenen Benutzergruppen wird erwartet, dass sie sich ihrer Verantwortung um die Sicherheit bewusst sind
und dass sie die richtigen Maßnahmen treffen um diese zu erhalten. Dabei werden die Benutzer in Typo3 in drei
grundlegende Gruppen unterteilt, von denen mehr oder weniger Sicherheitsbewusstsein erwartet wird:[68]
• Programmierer und Entwickler
Dieser Personenkreis ist bereits in der Entwurfsphase maßgeblich an den Sicherheitsaspekten beteiligt.
Von ihnen wird erwartet, dass sie sich umfassend im Typo3-System auskennen, sich laufend
Informationen über eventuelle Sicherheitsprobleme einholen und diese dann möglichst schnell im eigenen
CMS beheben. Des Weiteren sollten sie sich an die von Typo3 veröffentlichten ?Coding Guidelines?
halten, um einen möglichst hohen Sicherheitsgrad zu ermöglichen.
• Typo3-Administratoren
Ihre Verantwortung beginnt sobald das Typo3-System bereit für den produktiven Einsatz ist. Die
Hauptaufgabe der Typo3-Administratoren ist es, den laufenden Betrieb zu überwachen und möglichst
schnell auf Angriffe von außerhalb zu reagieren. Um dies zu realisieren müsse sie die automatisch
erstellten Logfiles kontrollieren, nicht mehr benötigte Programmteile entfernen und aktuelle Updates
zeitnah in die produktive Umgebung einfügen. Eine weitere sicherheitsrelevante Aufgabe der
Typo3-Administratoren ist das anlegen und pflegen der Benutzerkonten im Typo3-System.
• Redakteure
Von den Redakteuren werden keine umfassenden Sicherheitskenntnisse des Typo3-Systems erwartet. Sie
müssen nur verantwortungsvoll mit ihren Benutzerdaten umgehen und aufpassen, dass keine fremden
Personen über ihre Arbeitsstation unbefugt Zugang zum Typo3-System bekommen.
8.4.2 Im Install Tool
Bereits vor der Installation der Software lassen sich im Install Tool von Typo3 zahlreiche Einstellungen
vornehmen, die die Sicherheit des CMS deutlich erhöhen.[69]
• [SYS][encryptionKey]
Gewährleistet die Sicherheit bei Verschlüsselungs- und Hashing-Algorithmen, sowie auch bei temporären
Daten/URLs.
• [BE][warning_email_addr]
8.3.4.5 Fazit
28
Analyse_von_Typo3
Benachrichtigt die Administratoren falls ein Anmeldeversuch eines Benutzers viermal in einer Stunde
fehlschlägt. Dies ermöglicht den Verantwortlichen, möglichst schnell auf Brute-Force-Attacken oder
Wörterbuch-Angriffe zu reagieren und die betroffenen Accounts zu deaktivieren.
• [BE][lockIP] oder [FE][lockIP]
Die Verbindungen der Benutzer oder Besucher werden an die jeweils aktuelle IP-Adresse gebunden.
Sobald die IP-Adresse sich während der Session verändert, wird diese sofort ungültig und unterbrochen.
Somit lassen sich Angreifer abwehren, die versuchen eine Session von Benutzern oder Besuchern zu
übernehmen, um damit ins System zu kommen.
• [BE][lockSSL]
Anmeldungen oder Zugriffe auf das Backend sind nach Aktivierung der Funktion nur noch über
gesicherte SSL-Verbindungen möglich. Dies sichert die gesamte Verbindung in das Backend und
verhindert somit eine Übernahme der Session durch potentielle Angreifer.
• [BE][fileDenyPattern]
Verbietet das Hochladen von sicherheitskritischen Dateien (z.B. *.php). Somit können Angreifer keine
schadhaften Dateien in das CMS einschleusen.
Werden diese Möglichkeiten voll und ganz ausgeschöpft, ist das CMS bereits gegen einige Angriffsmethoden
bestens geschützt und einem produktiven Einsatz steht nichts mehr im Wege.
8.4.3 Im Kernsystem
Nach den Sicherheitseinstellungen während der Installation von Typo3 müssen auch im produktiven System
ständig Funktionen überwacht und Änderungen vorgenommen werden, um die Sicherheit zu gewährleisten. Dazu
bietet Typo3 den Administratoren einige sehr gute Möglichkeiten:[68]
• Login-Verfolgung
Typo3 bietet den Administratoren ein Tool mit dem alle Anmeldungen an das CMS protokolliert werden.
Dabei werden jeweils der Benutzername, die Uhrzeit und die IP-Adresse des Benutzers aufgezeichnet.
Diese ermöglicht den Administratoren, zu kontrollieren wann sich welcher Benutzer angemeldet hat, und
sie können somit mögliche illegale Zugriffe entdecken und dank der mit protokollierten IP-Adresse auch
zurückverfolgen.
• Beschränkung auf Domänen
Durch diese Funktion bietet Typo3 den Administratoren die Möglichkeit, den Zugriff auf das
Backend-System auf bestimmte Domänen zu beschränken. Somit lassen sich fast alle unerwünschten
Zugriffe von außerhalb der geschützten Bereiche unterbinden.
• Test-/Entwurfsumgebung
Die Entwurfsumgebung bietet den Entwicklern und Redakteuren von Typo3 die Möglichkeit,
grundlegende Änderungen am Design oder große Inhaltsänderungen vor der Veröffentlichung umfassend
zu testen. Diese Tests in einer abgeschotteten Umgebung ermöglichen, Schwachstellen selbst zu finden
8.4.2 Im Install Tool
29
Analyse_von_Typo3
und zu beheben, bevor sie von potentiellen Angreifern gefunden und ausgenutzt werden können. Erst
wenn die Tests in der Entwurfsumgebung abgeschlossen sind, werden Die Änderungen ins produktive
Umfeld übernommen und bieten somit keine Angriffsmöglichkeiten mehr.
• Benutzerverwaltung (Frontend/Backend)
Wie schon unter Punkt 9.3.2.1 Benutzerverwaltung - Rechte [2] erwähnt, besitzt Typo3 ein umfassendes
Rechtesystem, mit dem die Administratoren sowohl das Frontend als auch das Backend komplett
verwalten können. Es ermöglicht einzelnen Benutzern oder Benutzergruppen, Lese- oder Schreibzugriffe
auf einzelne Bereiche des Typo3-Systems zu geben. Somit können die Redakteure nur die Inhalte
bearbeiten, zu denen sie auch berechtig sind, und es können keine absichtlichen oder unabsichtlichen
Veränderungen an anderen Inhalten vorgenommen werden.
• Versionierung/Protokollierung
Durch die Versionierung in Typo3 werden geänderte Inhalte mit einer Markierung und Zeitstempel
versehen. Diese ermöglicht anderen Redakteuren Änderungen schneller nachzuvollziehen und
verschiedene Versionen miteinander zu vergleichen. Die angeschlossene Protokollierung ermöglicht den
Administratoren nachzuvollziehen, wer und wann bestimmte Inhalte verändert hat. Werden Inhalte
unabsichtlich oder absichtlich verändert, ist es in kürzester Zeit möglich eine ältere Version des Inhaltes
wiederherzustellen und damit den veränderten Inhalt zu ersetzen.
• Bearbeitungswarnung
Dieses Tool schützt das System nicht vor Angreifer von außerhalb, ist aber trotzdem ein wichtiges
Instrument um die innere Sicherheit der Inhalte sicherzustellen. Um gleichzeitige Bearbeitung eines
bestimmten Inhaltes zu verhindern bietet Typo3 eine Bearbeitungswarnung an. Diese informiert andere
Redakteure, dass der Inhalt zurzeit bearbeitet wird, verhindert aber nicht das gleichzeitige bearbeiten.
Somit lässt sich das CMS vor inkonsistenten Inhalten schützen.
8.4.4 Durch Extensions
Da Typo3 sowohl von Privatpersonen als auch von großen Unternehmen eingesetzt wird, kann das Kernsystem
nur gegen die bekanntesten Angriffsarten schützen. Mit den Extensions bietet Typo3 den Administratoren weitere
Möglichkeiten, ihr CMS noch besser gegen Angriffe von außen zu schützen. Je nach Infrastruktur können diese
weitere, zum Teil frei verfügbare Erweiterungen in das System einbinden um bestimmte Bereiche des CMS
besonders zu schützen. Aufgrund der Größe der Typo3-Community und der Fülle an verfügbaren Extensions
werden nur drei ausgewählte Erweiterungen in folgenden erläutert[68]:
• SSL-Seiten
Diese Extension ermöglicht es einzelne Seiten oder Bereiche der Internetpräsens nur über eine sichere
SSL-Verbindung erreichbar zu machen. Mit diesem Verfahren wird die Verbindung zwischen Benutzer
und Internetauftritt geschützt und Angreifer wird der Zugriff auf diese Verbindung deutlich erschwert.
• CAPTCHA-Unterstützung
8.4.3 Im Kernsystem
30
Analyse_von_Typo3
Abb.11: Beispiel eines CAPTCHA-Elements
Um die Webserver vor übermäßigen Anfragen durch sogenannte Spam-Roboter zu schützen, lassen sich
mit dieser Erweiterung CAPTCHA-Elemente in den Internetauftritt einbinden. Ein solches Element wird
meist bei Kontaktanfragen oder Gästebucheinträgen verwendet. Es ist im Grunde eine Bilddatei, in der
ein Code abgebildet ist, und der von Spam-Robotern nicht erfasst werden kann.
• Security-Check
Mit dieser Extension lassen sich recht einfach menschliche Fehler, die während der Installation passiert
sind, schnell entdecken und beheben. Es prüft zum Beispiel, ob alle Standard-Passwörter geändert, oder
ob die Benachrichtigungen für die Administratoren aktiviert worden sind. Leider prüft es nicht, ob alle
aktuellen Updates und Hotfixes installiert worden sind.
8.4.5 Fazit
Typo3 erfüllt die Sicherheitsanforderung an ein CMS sehr gut. Die während der Installation und im Kernsystem
verfügbaren Funktionalitäten bieten einen guten Basis-Schutz für ein CMS. Durch die zahlreichen
Sicherheits-Extensions wird auch ein weiterführender Schutz über Typo3 hinaus ermöglicht. Allerdings wird auch
hier, gerade wenn es um die Absicherung große Internetpräsenzen geht, einiges am Wissen benötigt um das
vorhandene CMS bestmöglich abzusichern.
8.5 Performance
8.5.1 Caching Konzept
Um die Last auf dem Server gering zu halten und die Performance zu erhöhen, benutzt Typo3 ein sogenanntes
Caching-Konzept, bei dem der erzeugte HTML-Code der Seiten und Seiteninhalte gecached werden. Beim Aufruf
großer, speicherintensiver Seiten wird daher serverseitig eine große Last erzeugt. Typo3 besitzt ein dynamisches
Verhalten, bei dem die Inhalte in einer Datenbank gehalten werden und bei Aufruf einer Webseite entsprechend
erzeugt werden. Das Ergebnis der Datenbankabfrage wird in einer Caching-Tabelle als fertiger HTML-Code
gespeichert. Wird der gleiche Inhalt nochmal aufgerufen, so wird keine Datenbankabfrage ausgeführt, sondern der
HTML-Code aus der Tabelle ausgelesen. Das macht dann Sinn, wenn Datenbankabfragen mehrere Tabellen
beinhalten. Es wird aber nicht nur der erzeugte HTML-Code gecached, sondern auch systemrelevante
Konfigurationseinstellungen oder Graphikabmessungen. Diese Werte müssen aber nicht verändert werden. Auch
bei speicherintensiven Graphiken ist es von Vorteil, da Typo3 die neuen Graphiken nur neu berechnet wenn sich
eine Seite verändert. Ansonsten wäre die Serverauslastung wesentlich höher. Es gibt aber auch Fälle, bei denen
das Caching nicht erwünscht ist. Werden z.B. ausgelagerte HTML Designvorlagen via FTP geändert, löscht
Typo3 den Cache nicht. Es wird also solange die alte Version angezeigt, bis der Cache geleert worden ist. Auch
die Darstellung graphischer Suchanfragen ist nicht dynamisch durchführbar, da die Suchanfrage typischerweise
jedes Mal anders aussehen kann. Hier bietet Typo3 einerseits die Möglichkeit das Caching global oder partiell zu
deaktivieren. Andererseits besteht die Möglichkeit, bei Änderungen von Dateien oder Vorlagen den gesamten
8.4.4 Durch Extensions
31
Analyse_von_Typo3
Cache zu löschen. Dies ist sowohl im Backend wie auch im Frontend möglich. Da auch der Cache von seiner
Größe begrenzt ist, hält Typo3 standardmäßig eine Seite für 24 Stunden im Cache. Die 24 Stunden sind ein
Default-Wert und können je nach Verhalten und Traffic nach oben oder nach unten verändert werden. Das
Caching-Konzept ist ein wichtiger Bestandteil von Typo3. Bei richtigem Einsatz ist ein hoher Performancegewinn
zu erwarten, kann aber auch bei unsachgemäßer Konfiguration ins Gegenteil umschlagen[70].
8.5.2 Datenbank-Tuning
Je nach verwendetem Datenbanktyp sind verschiedene Tuningmaßnahmen möglich. Allein MySQL besitzt viele
Parameter mit denen die Performance verbessert werden kann. Hier wird als Datenbank MySQL betrachtet, da
MySQL in Verbindung mit Typo3 am häufigsten verwendet wird. Der Query-Cache ist ein wichtiger Parameter
innerhalb der Datenbank. Hiermit lassen sich bei Datenbanken mit nicht so viel Schreibzugriffen gute
Performancegewinne erzielen. Der Query-Cache legt zuvor ausgeführte Abfragen im Speicher ab. Führt man
anschließend das exakte SQL-Statement noch einmal aus, wird die Abfrage wesentlich schneller abgearbeitet, da
sie nicht wirklich ?ausgeführt? wird, sondern unmittelbar aus dem Speicher gelesen wird. Weicht das
SQL-Statement nur minimal vom vorherigen ab, so wird auch das erstmal wieder im Cache abgelegt um bei
späteren gleichen Aufrufen wieder verwendet zu werden. Für Typo3 sollte der Query-Cache auf aktiv gestellt
werden. Die wichtigsten drei Parameter des Query-Caches sind:
• Query_cache_limit
Mit diesem Parameter wird die maximale Größe eines ResultSets angegeben.
Hier wird bestimmt, wie groß das Ergebnis einer Abfrage maximal sein soll,
das in den Cache kommen soll.
• Query_cache_size
Hiermit wird die Größe des Arbeitsspeichers angegeben, der für den Query_cache
reserviert werden soll. Die maximale Größe hängt von dem verfügbaren Arbeitsspeicher
ab. Hier kann kein Richtwert angegeben werden, da sich dieser Wert je nach Anwendungsfall
verändern kann.
• Query_cache_type
Steht der Parameter auf 0, ist der Query-Cache ausgeschaltet und Parameter werden
nicht mehr berücksichtigt. Steht der Parameter auf 1, werden alle Abfragen in den
Cache geschrieben.
Zu dem Tuning einer Datenbank gehört auch das Anlegen von Indizes. Aber das ist mit Vorsicht zu genießen, da
nicht jeder neu angelegte Index eine zusätzliche Performancesteigerung bringt. Hier sollte man durch
verschiedene Konstellationen ausprobieren, welches Tuning für den Anwendungsfall am meisten Performance
bietet. Desweiteren besteht die Möglichkeit, nachdem ein Content Management System online gestellt wurde,
innerhalb der Datenbank Statistiken zu sammeln, die für das weitere Tuning verwendet werden können.
Die Performanceergebnisse, die durch das Tunen einer Datenbank im Typo3-Umfeld gewonnen werden, hängen
von vielen äußeren Faktoren ab (Anzahl der Seitenaufrufe, speicherintesive Seiten, usw.). Daher lässt sich eine
Performanceverbesserung überwiegend durch experimentelles Vorgehen, je nach Anwendungsfall, erzielen[71].
8.5.1 Caching Konzept
32
Analyse_von_Typo3
8.5.3 Extensions-Verwendung
Bei der Verwendung von Extensions ist darauf zu achten, dass man nur Extensions benutzt, die auch wirklich
nötig sind. Natürlich gibt es eine große Menge an interessanten Funktionalitäten, aber der Nachteil dabei ist, dass
Extensions überwiegend aus PHP-Skripten bestehen, die beim Aufruf viel CPU-Last erzeugen und Speicher
benötigen. Aus diesem Grund sollten Extensions in der Lage sein, das Caching zu benutzen um die Auslastung
der Ressourcen zu minimieren. Es werden aber auch Extensions entwickelt, die die Ebene zwischen Typo3 und
Datenbank optimieren sollen. Von diesen Extensions wird allerdings abgeraten, da sie sehr versionsspezifisch
sind und Komplikationen mit anderen Extensions hervorrufen können. Natürlich können diese Probleme auch bei
einem Update oder Versionswechsel auftreten.
Extensions sind im Bezug auf die Performance mit Bedacht einzusetzen, um das System nicht mit unnötigen
Erweiterungen zu belasten[14].
8.5.4 Fazit
Um ein Typo3-System performant zu gestalten, gibt es kein allgemeines Kochrezept. Die vielfältigen Parameter
sind individuell für jedes System einzustellen. Typo3 bietet hierfür eine Vielzahl an Performance-Konzepten und
Parametern. Damit erfüllt Typo3 die Anforderungen hinsichtlich Performance an ein
Content-Management-System.
9 Fazit und Ausblick
Typo3 ist ein umfangreiches, leistungsfähiges und durchdachtes System im OpenSource-Bereich. Es ist nicht für
Anfänger geeignet, aber für Anwender mit etwas Programmiererfahrung und geringer Einarbeitungszeit durchaus
gut zu beherrschen. Es kann äußerst gut mit anderen teuren Content Management Systemen mithalten, und kann
von der kleinen privaten Webseite bis hin zum Internetauftritt von Großunternehmen eingesetzt werden. Es stellt
den Programmierern und den Webautoren viele Module zur Verfügung, die durch geringe Änderungen fast alles
ermöglichen was der Betreiber wünscht. Für die Zukunft ist Typo3 gut aufgestellt, weil es durch die unzählige
Benutzergemeinde ständig weiterentwickelt wird. Es passt sich gut an die steigenden zukünftigen Anforderungen
eines Content Management Systems an und kann somit auch noch in den nächsten Jahren konkurrenzfähig sein.
10 Fußnoten
1. ? Vgl. Typo3.com What is CMS
2. ? Vgl. Typo3 PHB S.28f
3. ? Vgl. Typo3.org Version-Matrix
4. ? 4,0 4,1 Vgl. Typo3.org Raodmap
5. ? Vgl. Typo3.com About-the-name
6. ? Vgl. Typo3.com Facts and Figures
7. ? Vgl. Typo3.org Dev. Community
8. ? Vgl. Typo3.org Kasper'S PodKasts
9. ? Vgl. Typo3.org Code of Conduct
10. ? Vgl. Typo3.org Events
11. ? 11,0 11,1 Vgl. Typo3 PHB S.32
12. ? Vgl. Typo3 PW S.251f
13. ? Vgl. Typo3 PHB S.655 - S.659
8.5.3 Extensions-Verwendung
33
Analyse_von_Typo3
14. ? 14,0 14,1 Vgl. Typo34u.de
15. ? 15,0 15,1 15,2 Vgl. Typo3.com Systemvoraussetzungen
16. ? Vgl. Typo3 PHB S.68
17. ? Vgl. Typo3 PHB S.82
18. ? Vgl. Typo3 PHB S.84f
19. ? Vgl. Typo3 PHB S.77
20. ? Vgl. Typo3 PHB S.80f
21. ? Vgl. Typo3 PHB S.76
22. ? Vgl.Typo3 PHB S.88
23. ? Vgl. Typo3 PHB S.93
24. ? Vgl. Typo3 PHB S.94
25. ? Vgl. Typo3 PHB S.96f
26. ? Vgl. Typo3 PHB S.106
27. ? Vgl. Typo3 PHB S.109ff
28. ? Vgl. Typo3 PHB S.118ff
29. ? 29,0 29,1 Vgl. Typo3 PHB S.125
30. ? Vgl. Typo3 PHB S.127f
31. ? Vgl. Typo3 PHB S.131
32. ? Vgl. Typo3 PHB S.134f
33. ? Vgl. Typo3 PHB S.136
34. ? Vgl. Typo3 PHB S.138
35. ? Vgl. Typo3 PHB S.140ff
36. ? Vgl. Typo3 PHB S.142ff
37. ? Vgl. Typo3 PHB S.149
38. ? Vgl. Typo3 PHB S.151ff
39. ? Vgl. Typo3 PHB S.154f
40. ? Vgl. Typo3 PHB S.167
41. ? Vgl. Typo3 PHB S.168f
42. ? Vgl. Typo3 PHB S.169f
43. ? Vgl. Typo3 PHB S.173
44. ? Vgl. Typo3 PHB S.175
45. ? Vgl. Typo3 PHB S.179
46. ? Vgl. Typo3 PHB S.194
47. ? Vgl. Typo3 PHB S.198
48. ? Vgl. Typo3 PHB S.211
49. ? Vgl. Typo3 PHB S.214
50. ? Vgl. Typo3 PHB S.205ff
51. ? Vgl. Typo3 PHB S.236
52. ? Vgl. Typo3 PHB S.239
53. ? 53,0 53,1 Vgl. Typo3 PHB S.241
54. ? Vgl. Typo3 PHB S.242
55. ? Vgl. Typo3 PHB S.236ff
56. ? Vgl. Typo3 PHB S.219ff
57. ? Vgl. Typo3 PHB S.220-235
58. ? Vgl. Typo3 PHB S.303ff.
59. ? Vgl. Typo3 PHB S.312ff
60. ? Vgl. Typo3 PHB S.288ff
61. ? Vgl. Typo3 PHB S.376ff
62. ? Vgl. Typo3 PHB S.376
63. ? Vgl. Typo3 PW S.252ff
64. ? Vgl. Typo3 PHB S.389ff
10 Fußnoten
34
Analyse_von_Typo3
65. ? Vgl. Typo3 PW S.355f
66. ? Vgl. Typo3 PHB S.619
67. ? Vgl. Typo3 PW S.262ff
68. ? 68,0 68,1 68,2 Vgl. Typo34u.de Alles Sicher?
69. ? Vgl. Typo3 PHB S.661ff
70. ? Vgl. Typo3 PW S.101ff
71. ? Vgl. Typo3 PHB S.681f
11 Literatur- und Quellenverzeichnis
Typo3.com
About-the-name
Typo3.com Facts and
Figures
Typo3.com
Systemvoraussetzungen
o.V, Typo3 Association(Hrsg.): Typo3 CMS: About the Name,
http://typo3.com/About-the-name.1859.0.html (02.06.2010 23:15)
o.V, Typo3 Association(Hrsg.): Typo3 CMS: Facts and Figures,
http://www.typo3.com/Facts_and_Figures.factsandfigures.0.html (04.05.2010 16:42)
o.V, Typo3 Association(Hrsg.): Typo3 CMS: Systemvoraussetungen,
http://typo3.com/Systemvoraussetzunge.1241.0.html?&L=2 (01.06.2010 17:12)
o.V, Typo3 Association(Hrsg.): Typo3 CMS: What is CMS?,
Typo3.com What is CMS
http://typo3.com/What-is-a-CMS.1351.0.html (12.05.2010 22:15)
Typo3.org Code of
o.V, Typo3 Association(Hrsg.): TYPO3 Community Code of Conduct,
Conduct
http://typo3.org/community/code-of-conduct/ (04.05.2010 16:42)
Typo3.org Dev.
o.V, Typo3 Association(Hrsg.): TYPO3 Developer Community,
Community
http://typo3.org/community/about/ (04.05.2010 16:44)
o.V, Typo3 Association(Hrsg.): Events for the people,
Typo3.org Events
http://typo3.org/community/events/ (04.05.2010 16:44)
Typo3.org Kasper's
o.V, Typo3 Association(Hrsg.): Kasper's PodKasts, http://typo3.org/podcasts/kasper
Podkast
(04.05.2010 16:44)
o.V, Typo3 Association(Hrsg.): Typo3 CMS: Roadmap,
Typo3.org Roadmap
http://typo3.org/development/roadmap/ (02.06.2010 23:15)
o.V, Typo3 Association(Hrsg.): Typo3 CMS: Packages,
Typo3.org Version-Matrix
http://typo3.org/download/version-matrix/ (02.06.2010 23:15)
Franz Ripfel, Melanie Meyer, Irene Höppner: Das Profihandbuch ? Leitfaden für
Typo3 PHB
Entwickler und Administratoren zu Version 4.1, Addison-Wesley Verlag, 2008
Typo3 PW
Robert Meyer: Praxiswissen Typo3, O'Reilly Verlag, 2006
o.V, Typo3 Association(Hrsg.): Informationsportal für Typo3 und CMS,
Typo34u.de
http://www.typo34u.de/index.php (28.05.2010 16:44)
o.V, Typo3 Association(Hrsg.): Typo3 - Alles sicher?,
Typo34u.de Alles Sicher?
http://www.typo34u.de/index.php?id=typo3_sicherheit (30.05.2010 12:34)
11 Literatur- und Quellenverzeichnis
35

Documentos relacionados