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