TYPO3 Theming und Distribution

Inhaltsverzeichnis
TYPO3 Theming und Distribution

TYPO3 Theming und Distribution

Thomas Deuling

Jo Hasenau

Kay Strobach

Inhalt

Einführung

Aufbau dieses Buchs

An wen sich dieses Buch richtet

Typografische Konventionen

Verwendung der Codebeispiele

Kontakt

Danksagungen

I. Die THEMES-Erweiterung

1. Inspiration und Geschichte

2. Einführung in die THEMES-Erweiterungen

THEMES für Einsteiger

THEMES für Redakteure

THEMES für Integratoren

THEMES für Entwickler

3. Die THEMES-Erweiterung installieren

THEMES als Distribution installieren

Das THEMES-Framework als einzelne Erweiterungen installieren

Übersicht über verwendete Erweiterungen

Installation

THEMES als Entwicklerversion via GIT installieren

Hinweise für eigene Deployments

4. Arbeiten mit der THEMES-Erweiterung

Auswahl eines Themes

Nutzung des THEMES-Backend-Moduls

Auswählen im sys_template-Datensatz

Einstellungen eines Themes ändern

Änderungen im Backend-Modul Themes

Änderungen im Konstanten-Editor (nur für Administratoren)

5. Themes konfigurieren

Auswählen eines Themes

Konfigurieren eines Themes

Konfigurieren des Theme-Konfigurators

II. TYPO3-Themes erstellen

6. Einführung in das Bootstrap-Base-Package für TYPO3-Themes

7. Theme-Struktur anlegen

Speicherplatz eines Themes – Wo sollten die Dateien des Themes liegen?

Verzeichnisstruktur eines Themes

Das Verzeichnis Configuration

Das Verzeichnis Meta

Das Verzeichnis Resources

Theme-Konfigurationsdateien

8. Backend-Layouts nutzen

Wozu benötigen Sie Backend-Layouts?

Das Backend mit Backend-Layouts strukturieren

Backend-Layouts anlegen und bereitstellen

So erstellen Sie ein Backend-Layout als Datensatz

So verwalten Sie Backend-Layouts in versionierbaren Dateien

Backend-Layout-TSconfig-Referenz

Backend-Layouts auf Seitenebene verwalten

Backend-Layouts entfernen

9. TypoScript-Basis anlegen

Root-Template erstellen

Konstanten der THEMES-Erweiterung

Automatisch generierte Theme-Konstanten

Konfigurations-Theme-Konstanten

Definition der constants.txt

TypoScript-Setup aus der THEMES-Erweiterung nutzen

TypoScript-Setup für Ihr Theme

Die Content-Marker bereitstellen

Logo für das Theme bereitstellen

Daten aus den Inhaltsseiten auslesen

Menüs erstellen

Top-Menü erstellen

Breadcrumb-Menü erstellen

Hauptmenü erstellen

10. Grid-Layouts

Grid-Elemente und ihre Einsatzmöglichkeiten

Standard-Container zum Zusammenfassen von Elementen verwenden

Grid-Container zur strukturierten Darstellung von Inhalten nutzen

Funktions-Container für besondere Eigenschaften einsetzen

Einen neuen Grid-Element-Typ als Datensatz erzeugen

CE-Backend-Layouts in versionierbaren Dateien verwalten

CE-Backend-Layout-TSconfig-Referenz

CE-Backend-Layouts auf Seitenebene verwalten

Ausgabe von Grid-Elementen im Frontend

Ebenen der Frontend-Ausgabe konfigurieren

Responsive Grids für Bootstrap erzeugen

Generische Klassennamen für ein Framework verfügbar machen

Einfache Grid-Container zur Gruppierung von Elementen erzeugen

Beispiele für spezielle Grid-Container

Vierspaltiger Grid-Container

Grid-Container mit dynamischer Spaltenanzahl verfügbar machen

Funktions-Container für Karussells

11. Fluid-Templates erstellen

Die Fluid-Template-Engine

Fluid-Layouts

Fluid-Templates

Fluid-Partials

Fluid-Namespaces

Fluid-Variablen

Bereitstellung der Template-Pfade

Zugriff auf Theme-TypoScript-Konstanten

Arbeiten mit Fluid

12. Dynamisches CSS einsetzen

DynCSS installieren

DynCSS verwenden

Definition von konfigurierbaren LESS-Variablen

Bootstrap einbinden

Probleme beheben

Erweitertes Beispiel

13. jQuery integrieren

Installation der Erweiterung t3jquery

Erstellung einer individuellen jQuery-JS-Bibliothek

JS-Analyse auf jQuery-Abhängigkeiten

JS-Analyse von t3jquery.txt in Extensions

Komprimieren eigener JS-Dateien

Abhängigkeit von T3 jQuery im Theme vermerken

jQuery-Komponenten für T3 jQuery vermerken

Generierte jQuery-Bibliothek im Theme verwenden

Eigenes JavaScript im Theme einbinden

JavaScript-Bibliotheken über ein CDN einbinden

t3jquery auf ein CDN umstellen

Weitere Bibliotheken über ein CDN einbinden

Einstellungswerte in TypoScript bereitstellen

Sprachwerte in JavaScript bereitstellen

Fehlersuche

JavaScript-Konsole auf Fehler überprüfen

Wird jQuery als erste Datei geladen?

Wird jQuery mehrfach geladen?

14. Mehrsprachigkeit implementieren

Mehrsprachigkeit mit THEMES

Anlegen einer zweiten Sprache

Sprachmenü erstellen

Sprachdateien für das Theme

Sprachwerte aus einem Theme mit TypoScript überschreiben

Ausgewählte Sprache als CSS-Klasse im Body-Tag bereitstellen

15. Mit Inhaltselementen arbeiten

Varianten anlegen

Einrahmungen bereitstellen

Seitenkopf bereitstellen

Breitwand bereitstellen

Meldungen bereitstellen

Verhalten anlegen

Container bereitstellen

Tabellen bereitstellen

16. News integrieren

Installation der Erweiterung

Einrichten der Erweiterung

Verzeichnisstruktur für Erweiterungen

TypoScript der Erweiterung

TypoScript-Konstanten

TypoScript-Setup

Template-Anpassungen der Erweiterung

Öffentliche Dateien der Erweiterung

Sprachanpassungen der Erweiterung

CSS-Anpassungen der Erweiterung

17. RealURL bereitstellen

RealURL-Installation

RealURL für ein Theme aktivieren

RealURL im Backend verwenden

Erweiterte RealURL-Konfiguration

RealURL Auto-Konfiguration

18. Themes vererben

Erstellen der Theme-Erweiterungsstruktur

Seiten-TypoScript bereitstellen

TypoScript-Konstanten bereitstellen

TypoScript-Setup bereitstellen

Fluid-Templates bereitstellen

LESS im Theme verwenden

Neues LESS im Theme verwenden

LESS aus Theme-Bootstrap als Basis verwenden

Sprachwerte des Themes anpassen

JavaScript im Theme verwenden

Gridelements-Komponente im Theme verwenden

Favicon im Theme bereitstellen

19. Zusammenfassung

III. TYPO3-Distributions

20. Einführung in TYPO3-Distributions

Wo findet man Distributionen?

Distributionen auf der TYPO3-Website

Distributionen im Erweiterungsmanager

Eine Distribution installieren

21. Distributionen erstellen

Distributions-Struktur

Dateisysteminhalte

Datenbankinhalte in einem t3d-Export bereitstellen

Eigene Erweiterungen mitliefern

Spezielle Konfigurationen und Aktionen

Distribution testen

Zusammenfassung

22. Distributionen verwenden

Zielgruppenspezifische Einsteigerpakete

Firmeninterne Prototypen

Branchenlösungen

Testumgebungen für Entwickler

Stichwortverzeichnis

Kolophon

Copyright

Einführung

Die meisten populären Web-Content-Management-Systeme im Open Source-Bereich verfügen bereits seit Jahren über eine große Anzahl fertiger Designvorlagen . Diese sogenannten Themes stehen zum Download über die offiziellen Seiten der Anbieter oder in eigens dafür eingerichteten Theme-Shops bereit. Das Geschäft mit dem Verkauf der Designs boomt. Die einzige Ausnahme bildete bisher TYPO3, für das trotz seiner Beliebtheit insbesondere im europäischen Raum nur eine sehr begrenzte Anzahl von Vorlagen existierte.

Es sind jedoch nicht zuletzt eben solche Themes, die es Neulingen vereinfachen, den Einstieg in das System und die damit verbundene Community zu finden. Die Erschließung von Märkten über den bisherigen Anwendungsbereich hinaus würde damit ebenfalls ermöglicht, denn TYPO3 wird bisher vor allem im sogenannten Enterprise-Bereich für Unternehmenswebseiten genutzt, der Einsatz für kleinere Websites würde mit einer größeren Anzahl an fertigen Themes deutlich erleichtert. Wir sind daher der Meinung, dass es insbesondere für TYPO3 wichtig ist, deutlich mehr solcher Vorlagen anzubieten als bisher. Aus diesem Grund wurde 2013 ein Projekt ins Leben gerufen, das seit Kurzem interessierten Designern und Programmierern die Grundlage dazu liefert, selbstständig sogenannte Theme-Packages zu erstellen.

Wir bezeichnen eine solche Grundlage als Base-Package . Um wie auch immer geartete Themes zu erstellen, empfiehlt es sich in jedem Fall, auf ein passendes Base-Package zurückzugreifen, weil damit bereits ein Großteil der erforderlichen Arbeiten an einem Theme abgedeckt wird. Insbesondere die zugrunde liegenden HTML-Strukturen sollten weitestgehend vereinheitlicht sein, um später möglichst einfach zwischen einzelnen Themes wechseln zu können. Genau diese vereinheitlichte Basis liefert ein Base-Package. Innerhalb eines solchen Base-Package wird jeweils nur ein bestimmtes Framework genutzt, jedoch haben wir bei der Konstruktion der Packages darauf geachtet, dass auch bei Verwendung eines anderen Frameworks als Basis dennoch eine weitestmögliche Kompatibilität zwischen den Paketen hergestellt wird. So wird später auch der Wechsel zwischen verschiedenen Frameworks mit geringem zusätzlichem Aufwand möglich sein.

Zur Finanzierung eines Base-Package haben wir eine Crowdfunding -Kampagne genutzt, die gleichzeitig als Voting für das zugrunde liegende Framework diente. Jeder Sponsor konnte ein Framework seiner Wahl benennen. Neben Bootstrap wurden dabei Foundation , Skeleton und YAML benannt. Die Wahl fiel letztlich mit 90 % der Stimmen sehr eindeutig auf Bootstrap. Das erste Base-Package basiert daher auf diesem Framework, für das im Netz bereits eine breite Palette vorgefertigter Design-Themes existiert. Es bietet damit vielfältige Möglichkeiten, beliebig viele dieser Designs in Form von auf dem Base-Package aufsetzenden Theme-Packages für die Nutzung mit TYPO3 aufzuarbeiten.

Das Ziel dieses Buchs ist es, Ihnen den Aufbau des Bootstrap-Base-Package und seiner Bestandteile zur Verwendung mit den von uns bereitgestellten Erweiterungen rund um die Extension THEMES zu erläutern. Wir werden dazu auf ein von uns bereitgestelltes Theme-Package zurückgreifen und Sie Schritt für Schritt durch Struktur, Konfiguration und Funktionalität dieser Basis führen. Falls Sie noch keine Erfahrung mit dem Aufbau eines Base-Package zum Beispiel durch einen unserer Workshops bei TYPO3-Camps oder Developer-Days haben, sollten Sie diese Schritte in der vorgegebenen Reihenfolge gemeinsam mit uns gehen. Am Ende werden Sie in der Lage sein, selbst eine solche Basis für ein beliebiges Frontend-Framework zu erstellen und darauf aufbauende Design-Themes selbst zu nutzen oder sie zum freien Download oder zum Verkauf anzubieten.

Aufbau dieses Buchs

In Teil I werden wir uns mit der eigentlichen Erweiterung THEMES , ihrer Installation , dem grundlegenden Aufbau und ihrer Funktionalität beschäftigen. Sie werden lernen, wie Sie ein damit installiertes Theme nutzen, welche Bestandteile für die sinnvolle Nutzung eines Themes zwingend erforderlich und welche optional sind und wie Sie ein Theme über den sogenannten Konstanten-Editor konfigurieren können.

In Teil II geht es um die Ordnerstruktur eines Themes, die Strukturierung der Inhalte für Redakteure durch Backend-Layouts und Grid-Elemente sowie deren Ausgabe im Frontend mithilfe der TYPO3-eigenen Bordmittel TypoScript und Fluid-Templates . Sie erfahren, wie Sie für besondere Komponenten des verwendeten Frontend-Frameworks speziell strukturierte Grid-Elemente anlegen oder bereits existierende Komponenten anderer Base-Packages wiederverwenden können. Außerdem gehen wir auf die Konfiguration und Einbindung von dynamischen Stylesheets sowie JavaScript-Komponenten ein.

Nach dem Aufbau von Seiten und Inhalten behandeln die weiteren Kapitel insbesondere die Installation , Konfiguration und Ausgabe zusätzlicher Funktionen. Hierbei konzentrieren wir uns auf einige wenige Standardfunktionen, wie sie häufig in Bootstrap-Themes zu finden sind. Sie werden sich dort mit Kontaktformularen , der mehrsprachigen Ausgabe von Seiten und Inhalten, der Integration von News, der Einbindung von besonderen Elementen sowie der Erzeugung lesbarer URLs beschäftigen. Außerdem geben wir in diesem Abschnitt Hinweise dazu, was Sie bei der Integration weiterer Erweiterungen in Ihrem Theme-Package berücksichtigen sollten. Am Ende dieses Abschnitts werden Sie bereits in der Lage sein, eigene Base-Packages zu bauen und Themes dafür zu liefern.

Teil III beschreibt mit den sogenannten Distributions ein besonders nützliches neues Feature, das TYPO3-Anwendern seit der TYPO3-Version 6.2 zur Verfügung steht. Neben einem Theme-Paket lassen sich über eine solche Distribution fertige Seitenbäume, Inhaltselemente, Erweiterungen mit vorgefertigten Plug-in-Konfigurationen und vorkonfigurierte Nutzerzugänge sowohl für das Frontend als auch für Redakteure im Backend erzeugen. Zusammengefasst, können daraus vollständige Branchenlösungen entstehen, bei denen sich die Anwender nach der Installation sofort auf die Eingabe der eigentlichen Inhalte konzentrieren können. Wir zeigen Ihnen, wie Sie eine solche Branchenlösung erstellen und wie Sie die einzelnen Bestandteile erzeugen und vorkonfigurieren.

Zusammen mit dem Bootstrap-Base-Package , dessen Entstehung wir im Buch beschreiben und das Sie unter typo3-themes.org herunterladen können, erhalten Sie so einen ausführlichen Leitfaden. Mit dessen Hilfe können Sie in kürzester Zeit selbstständig ein Base-Package erzeugen oder Theme-Packages für bereits existierende Base-Packages erstellen.

An wen sich dieses Buch richtet

Das Buch richtet sich an Entwickler, Integratoren und Designer mit ausreichend Erfahrung in der Anwendung und Bedienung von TYPO3, mit den zugrunde liegenden PHP-Klassen und Methoden sowie mit den üblichen Werkzeugen der TYPO3-Anwendungsentwicklung. Es handelt sich dabei ausdrücklich nicht um eine reine Anleitung zur Nutzung eines Themes, obwohl natürlich Teile davon im Buch zu finden sein werden. Für Einsteiger in TYPO3 oder reine Anwender von Themes empfehlen wir die sogenannte Guided-Tour-Distribution sowie das jeweilige Handbuch zum Theme.

Typografische Konventionen

Die folgenden typografischen Konventionen werden in diesem Buch verwendet:

Kursiv

Steht für neue Begriffe, Dateinamen und Pfade, URLs und E-Mail-Adressen. Viele neue Begriffe sind in einem Glossar am Ende des Buchs definiert.

Nichtproportionalschrift

Wird für Programmlistings genutzt, aber auch für Code innerhalb eines Absatzes, und bezieht sich auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter.

Anmerkung

Dieses Symbol weist auf einen Tipp, einen Vorschlag oder eine allgemeine Anmerkung hin.

Warnung

Dieses Symbol weist auf eine Warnung hin.

Verwendung der Codebeispiele

Dieses Buch ist dazu gedacht, Ihnen bei der Erledigung Ihrer Arbeit zu helfen. Im Allgemeinen dürfen Sie den Code in diesem Buch in Ihren eigenen Programmen oder Dokumentationen verwenden. Solange Sie den Code nicht in großem Umfang reproduzieren, brauchen Sie uns nicht um Erlaubnis zu bitten. Zum Beispiel benötigen Sie nicht unsere Erlaubnis, wenn Sie ein Programm unter Zuhilfenahme mehrerer Codestücke aus diesem Buch schreiben. Wenn Sie allerdings einen Datenträger mit Beispielen aus O’Reilly-Büchern verkaufen oder vertreiben wollten, müssen Sie eine Genehmigung von uns einholen. Eine Frage mit einem Zitat oder einem Codebeispiel aus dem Buch zu beantworten, erfordert keine Genehmigung. Signifikante Teile von Beispielcode aus dem Buch für die eigene Produktdokumentation zu verwerten, ist dagegen genehmigungspflichtig. Wir freuen uns über eine Quellenangabe, verlangen sie aber nicht unbedingt. Zu einer Quellenangabe gehören normalerweise Autor, Titel, Verlagsangabe, Veröffentlichungsjahr und ISBN, hier also: »Thomas Deuling, Jo Hasenau und Kay Strobach, TYPO3 Theming und Distribution, O’Reilly Verlag 2015, ISBN 978-3-95561-710-3«.

Sollten Sie das Gefühl haben, Ihre Verwendung der Codebeispiele könnte gegen das Fairnessprinzip oder die Genehmigungspflicht verstoßen, dann nehmen Sie bitte unter kommentar@oreilly.de Kontakt mit uns auf.

Kontakt

Bitte richten Sie Anfragen und Kommentare zu diesem Buch an den Verlag:

O’Reilly Verlag GmbH & Co. KG Balthasarstraße 81 50670 Köln

Wir haben eine Webseite zu diesem Buch eingerichtet, auf der Errata, die Codebeispiele und zusätzliche Informationen veröffentlicht werden. Sie finden die Seite unter:

http://www.oreilly.de/catalog/typo3themingger/

Kommentare oder technische Fragen zu diesem Buch schicken Sie bitte per E-Mail an:

kommentar@oreilly.de

Weitere Informationen zum gesamten Angebot des O’Reilly Verlags finden Sie auf unserer Website: http://www.oreilly.de.

Wir sind auf Facebook: facebook.com/oreilly.de (https://www.facebook.com/oreilly.de)

Folgen Sie uns auf Twitter: twitter.com/OReilly_Verlag/(https://twitter.com/oreilly-verlag)

Danksagungen

Der besondere Dank der Autoren gilt den insgesamt 72 Unterstützern der Crowdfunding-Kampagne auf Startnext, allen voran den Hauptsponsoren Michael Dengler, Peter Linzenkirchner und Jochen Weiland, die mit ihren Beiträgen die Entwicklung der Pakete ermöglicht und dabei gleichzeitig für Bootstrap als erstes Base-Package gestimmt haben. Außerdem möchten wir uns ausdrücklich bei Alexandra Follenius und dem Team von O'Reilly Deutschland für die uns entgegengebrachte Geduld bedanken, die wir oftmals ein wenig überstrapaziert haben.

Wir wünschen Ihnen viel Erfolg!

Teil I. Die THEMES-Erweiterung

Kapitel 1. Inspiration und Geschichte

TYPO3 CMS wurde Ende der 1990er-Jahre vom Dänen Kasper Skårhøj erfunden und zunächst als proprietäres Content-Management-System seiner damaligen Firma entwickelt. Im Jahr 2001 erschien mit TYPO3 3.0 die erste Open Source-Version des Systems, die innerhalb weniger Jahre insbesondere auf dem europäischen Markt einen beachtlichen Verbreitungsgrad erreichte. Dieser Umstand war nicht zuletzt zwei Dingen geschuldet, die es Einsteigern erheblich vereinfachten, erste Schritte mit der Software zu machen:

Zum einen gab es mit der Example Page eine äußerst umfangreiche Sammlung von Beispielen für die TYPO3-eigene Konfigurationssprache TypoScript, zum anderen verfügten bereits frühe Versionen des CMS über sogenannte Static Templates (Abbildung 1.1), mit deren Hilfe sich nach wenigen Klicks ein fertiges Design für eine neue Website erzeugen ließ. Zusätzlich existierte noch die FC Bigfeet Site (Abbildung 1.2), die Website eines imaginären Fußballvereins, mit deren Hilfe verschiedene Funktionen von TYPO3 einfach nachvollziehbar waren.

Static Templates
Abbildung 1.1 Static Templates
FC Bigfeet Site
Abbildung 1.2 FC Bigfeet Site

Das Design dieser frühen Themes war nicht weltbewegend, und der dafür genutzte HTML-Code würde heute nicht mehr dem technischen Standard entsprechen. Dennoch halfen sie, das Ziel zu erreichen, möglichst viele Anwender für das System TYPO3 zu gewinnen. Nur so konnte Skårhøj gleichzeitig die Basis der verfügbaren Entwickler für das Content-Management-System erweitern, was insbesondere bei Open Source-Software ein wichtiger Faktor für die Weiterentwicklung ist. In den folgenden Jahren erlebte die TYPO3-Community einen erheblichen Zuwachs an Anwendern und Entwicklern, und TYPO3 wurde zu einem der führenden Open Source-CMS mit Hunderttausenden von Installationen weltweit.

Während zur gleichen Zeit für andere Open Source-Systeme wie Joomla oder WordPress eine wahre Flut von vorgefertigten Themes zum freien oder kostenpflichtigen Download produziert wurde, entwickelte sich dieser Bereich für TYPO3 eher spärlich. Der Grund hierfür lag zum einen darin, dass mit TemplaVoila eine ebenfalls von Skårhøj entwickelte Erweiterung existierte, mit deren Hilfe man verschiedene HTML-Vorlagen über ein sogenanntes Mapping relativ einfach für TYPO3 verfügbar machen konnte. Zum anderen positionierte das TYPO3-Marketingteam das System zunehmend im Enterprise-Segment, was nach Ansicht vieler Entwickler die Verfügbarkeit von vorgefertigten Themes eher unwichtig machte.

Die Folge war, dass Konkurrenzsysteme den Massenmarkt eroberten, während TYPO3 den Ruf bekam, es sei ein zwar qualitativ hochwertiges, aber für einfache Anwender viel zu kompliziertes System mit zu hohen Einstiegshürden bei einer gleichzeitig eher langen Lernphase. Dies führte dazu, dass das stetige Wachstum der TYPO3-Community stagnierte und immer weniger Entwickler als Nachwuchs für das langsam älter werdende Core-Team zur Verfügung standen.

Zwar gibt es anstatt der FC Bigfeet Site seit 2010 mit dem sogenannten Introduction Package ein modernes und sauber strukturiertes Paket, um Einsteigern die Funktionen des CMS zu erläutern, aber für Static Templates existiert bis heute kein adäquater Ersatz. Zudem wurde für das Introduction Package anfangs eine Lizenz gewählt, die die Verwendung des Pakets als Basis für eine eigene Website erschwerte.

Aus dieser Situation heraus entstand die Idee, TYPO3 für den Massenmarkt wieder attraktiver zu machen, ohne dabei auf die bekannte Zuverlässigkeit und Codequalität des Kernsystems zu verzichten. Damit würden mittel- bis langfristig nicht nur Einstiegshürden für Anfänger beseitigt, sondern auch eine breitere Basis geschaffen, um die Fortentwicklung des Systems zu sichern.

Erste Ansätze für die Erweiterung THEMES entstanden bereits aus dem sogenannten Framework for TemplaVoila , das unter Federführung von Ron Hall von einer Gruppe rund um die Web-Empowered-Church in den USA entwickelt wurde. Die grundlegenden Ideen dieses Frameworks wurden zunächst auch in Themes integriert. So bestand mit diesem Framework erstmals die Möglichkeit, strukturgebende Inhaltselemente wie zum Beispiel mehrspaltige Container für das jeweilige Layout anzupassen. Dazu definierte das Framework einen recht umfangreichen Baukasten von Standardinhalten , der dann für das jeweilige Theme lediglich durch TypoScript angepasst werden musste.

Der Baukasten umfasste seinerzeit folgende Elemente:

Bereits mit diesen Werkzeugen war eine effektive Erstellung von Internetseiten möglich. Da das Framework auf TemplaVoila basierte, kam mit den dadurch verfügbaren Seitentypen noch ein weiteres Hilfsmittel hinzu. Das Framework bringt bereits 15 Seitentypen mit, mit denen eine Seite in die typischerweise genutzten Bereiche einer Website eingeteilt werden kann. Dazu gehören:

Footer

Inhalte, die sich unter dem Hauptinhalt befinden

Feature

Bereich, der sich typischerweise im Kopf der Seite befindet und Inhalte besonders hervorhebt

Hauptinhalt

Hauptinhalt der Seite

Generated Content 1 und 2

Inhalte, die via TypoScript erzeugt werden, z. B. News etc.

Links und Rechts

Inhalte, die sich rechts oder links vom Hauptinhalt befinden

Da diese Bereiche in allen auf dem Framework basierenden Themes jeweils gleich benannt wurden, ist ein Wechsel des Seitenlayouts und sogar des gesamten Themes ohne nachträgliche Eingriffe und Korrekturen des Inhalts möglich.

Basierend auf den Erfahrungen mit diesen standardisierten Features des Framework for TemplaVoila , entstand die Idee zur aktuellen Version von THEMES, wobei wir als technische Basis die neuen Möglichkeiten von TYPO3 CMS 6.2 LTS nutzen.

Zur groben Strukturierung der Seiten dienen anstatt der Erweiterung TemplaVoila die bereits im TYPO3-Core verfügbaren Backend-Layouts , die ihrerseits mit einem FLUID-Template für die Frontend-Ausgabe verbunden werden. Zur detaillierteren Strukturierung der Inhaltselemente verwenden wir die Erweiterung Gridelements , die wiederum auf demselben technischen Prinzip beruht, das bereits für Backend-Layouts verwendet wird. Auch hierfür erfolgt die Frontend-Ausgabe zu einem großen Teil mithilfe von FLUID-Templates in Kombination mit entsprechenden TypoScript-Konfigurationen.

FLUID-Templates haben den Vorteil, dass deren Syntax, im Gegensatz zu dem für Entwickler meist kryptischen TypoScript, sehr nahe am tatsächlich auszugebenden HTML liegt, was die Einstiegshürde senkt und damit TYPO3 CMS für neue Entwickler und Integratoren einfacher zugänglich macht.

Durch diese technischen Feinheiten ermöglichen THEMES eine extreme Flexibilität bei gleichzeitiger Standardisierung von Datenstrukturen, die ohne Programmierkenntnisse in diesem Umfang aktuell in keinem anderen Content-Management-System verfügbar ist.

Kapitel 2. Einführung in die THEMES-Erweiterungen

Im Zuge der Entwicklung von THEMES sind einige Erweiterungen entstanden, die in ihrer Gesamtheit als THEMES-Framework bezeichnet werden. Die meisten dieser Erweiterungen werden im Verlauf dieses Buchs schrittweise erklärt.

Dies sind die wichtigsten Erweiterungen:

Durch diesen Aufbau können theoretisch gesehen verschiedene Erweiterungen zum Rendern der Inhaltsstrukturen verwendet werden. Derzeit werden offiziell jedoch nur die durch themes_gridelements definierten Strukturen unterstützt, sodass ein einfacher Wechsel zwischen einzelnen Themes möglich ist, ohne die Inhalte neu verteilen oder migrieren zu müssen. Die so bereitgestellten Standards decken nach unseren Erfahrungen fast alle üblichen Anwendungsfälle ab.

Anmerkung

Immer wenn THEMES in Großbuchstaben geschrieben wird, ist die Erweiterung selbst gemeint, wird dagegen von einem Theme gesprochen, ist eine konkrete Frontend-Vorlage gemeint, die mithilfe dieser Erweiterung erzeugt wurde.

THEMES wurde mit dem Fokus auf folgende Zielgruppen entwickelt, auf deren Anforderungen wir im Folgenden eingehen werden:

Jede dieser Gruppen hat spezielle Anforderungen, die durch unsere Erfahrungen in der TYPO3-Community ermittelt und zusammengetragen wurden. Dabei haben wir besonders Entwickler und Einsteiger im Blick, denn eine Standardisierung der Frontend-Ausgabe ist für beide Gruppen nützlich. Entwickler können damit zügiger arbeiten, Einsteiger finden sich schneller innerhalb der Strukturen zurecht.

THEMES für Einsteiger

Für Einsteiger in die TYPO3-Welt bietet THEMES die Möglichkeit, innerhalb weniger Minuten ein grundsätzlich benutzbares Content-Management-System zu erhalten.

Unsere Motivation war, dass sich TYPO3 CMS nach der Installation möglichst benutzerfreundlich und ohne großen Aufwand umgehend verwenden lässt. Ein Standard-TYPO3-CMS begrüßte seinen Nutzer nämlich bisher nach der Installation mit der folgenden wenig hilfreichen Fehlermeldung (Abbildung 2.1).

Exception, die einen Nutzer direkt nach der Installation von TYPO3 CMS erwartet
Abbildung 2.1 Exception, die einen Nutzer direkt nach der Installation von TYPO3 CMS erwartet

Auch auf der darin verlinkten Wiki-Seite (Abbildung 2.2) erhält man nur rudimentäre Informationen über ein Basis-TypoScript zur Ausgabe des Texts »Hallo Welt«.

TYPO3 ist so, wie es auf TYPO3.org zum Download angeboten wird, ein sehr mächtiges Content-Management-Framework , dessen vielfältige Möglichkeiten aber auf Neueinsteiger oder wechselwillige Nutzer anderer Content-Management-Systeme oft abschreckend wirken.

Anmerkung

Den Download von TYPO3 CMS finden Sie unter: https://typo3.org/download/

Zugehörige Wiki-Seite
Abbildung 2.2 Zugehörige Wiki-Seite

Das vollständige THEMES-Framework mit allen erforderlichen Erweiterungen kann als sogenannte Distribution installiert werden, wodurch man ein sofort sinnvoll nutzbares System erhält. Das ist möglich, da eine Distribution eine Kombination aus Erweiterungen, Datenbankinhalten und Dateien liefert und diese automatisch entsprechend im System ablegt.

In THEMES wird ein Standardsatz von oft genutzten strukturierenden Inhaltselementen definiert, der dann vom darauf basierenden Theme in der Frontend-Ausgabe lediglich angepasst wird. Durch diesen Ansatz ist zwischen den meisten Themes ein einfaches Umschalten möglich, was es einem Einsteiger ermöglicht, verschiedene Themes auszuprobieren, um das System kennenzulernen und es schrittweise an seine Anforderungen anzupassen. Zudem bietet THEMES die gleichzeitige Nutzung von mehreren Themes innerhalb derselben TYPO3-Installation, womit Varianten einer Seite einfach getestet und verändert werden können.

Durch diesen Ansatz ist es möglich, sehr einfach in die Welt von TYPO3 CMS einzusteigen und diese damit auch für Neueinsteiger weiter zu öffnen.

THEMES für Redakteure

THEMES bietet Redakteuren, soweit vom Integrator erlaubt, die Möglichkeit, in einem definierten Rahmen auf das Layout von Seitenbäumen einzuwirken. So ist es dem Redakteur ohne die Nutzung von Typo-Script möglich, die Frontend-Ausgabe innerhalb dieses Rahmens festzulegen. Wie weit oder eng dieser Rahmen gesteckt sein sollte, hängt zum einen von den Fähigkeiten der jeweiligen Redakteure ab, zum anderen davon, wie viele Freiheiten man der Redaktion bei der Gestaltung der Seite einräumen möchte, ohne festgelegte Regeln des Corporate Designs zu verletzen. Mit THEMES sind sowohl sehr restriktive als auch vollständig freie Gestaltungsvarianten möglich.

Bei einer restriktiveren Konfiguration würden die vom Integrator freigegebenen Konstanten zum Beispiel genutzt, um lediglich die Farbwelten einer Internetseite zu gestalten. Der Redakteur kann im Backend-Modul von THEMES eine oder mehrere Basisfarben festlegen, und das verwendete Theme erzeugt mithilfe von TypoScript und der Erweiterung DynCSS die nötigen CSS-Dateien mit den dazu passenden Farbvarianten.

In einer freieren Konfiguration könnten Redakteure nicht nur einzelne Basisfarben verändern, sondern über entsprechende Checkboxen und Radio-Buttons besondere Effekte, Positionen oder Sichtbarkeitseinstellungen des zugrunde liegenden Frameworks auswählen. Insbesondere für responsive Layouts ist dies sehr hilfreich. Es setzt aber gleichzeitig entsprechende Erfahrungen der Redaktion voraus, weil sonst schnell unerwünschte Ergebnisse zustande kommen.

Durch die Standardisierung von Datenstrukturen ist es außerdem einfach, das Layout einer Webseite anzupassen, ohne dass die Inhalte noch einmal erfasst oder umstrukturiert werden müssen. Dies erspart den Redakteuren viel Arbeit, die sonst zum Beispiel beim Relaunch einer Website mit neuem Design entstand.

THEMES für Integratoren

TYPO3-Integratoren wird durch Themes eine neue Welt im Bereich der Frontend-Entwicklung geöffnet. Derzeit haben viele Agenturen ihre eigenen Frontend-Frameworks mit immer wieder den gleichen typischerweise auf Internetseiten verwendeten Elementen.

  • Mehrspaltige Elemente

  • Tabs

  • Slider

  • Akkordeon

Mit THEMES werden diese typischen Datenstrukturen in Backend-Layouts und GridElements abgebildet und können in jedem Design angepasst und ausgegeben werden. Da Integratoren damit nur noch spezielle Elemente neu erstellen müssen, sinkt der Entwicklungs- und Einarbeitungsaufwand erheblich, zumal viele dieser speziellen Elemente von den bereits im Theme verfügbaren Elementen abgeleitet werden können. Diese standardisierten Elemente dienen dabei nicht nur als Baukasten, um sich die Methoden von THEMES anzueignen, sie stellen gleichzeitig sicher, dass die erlernten Fähigkeiten sich an eben diesen Standards orientieren, was wiederum allen Entwicklern und Anwendern von TYPO3 zugute kommt.

Zusätzlich wird durch ein ausgeklügeltes Vererbungssystem die Möglichkeit geschaffen, für die grundlegende TYPO3-Installation einer Website mit verschiedenen Teilbereichen zunächst ein agentureigenes Basis-Theme zu nutzen, das für die einzelnen Teilbereiche beliebig erweitert werden kann. Integratoren können so mit deutlich weniger Aufwand wesentlich schneller brauchbare Ergebnisse liefern.

Am Beispiel des Frontend-Frameworks Bootstrap wird dies später im Buch ausführlich erklärt.

Anmerkung

Bootstrap-Dokumentation in Englisch: http://getbootstrap.com/

Bootstrap-Dokumentation in Deutsch: http://holdirbootstrap.de/

THEMES für Entwickler

Aus der Sicht des Entwicklers hilft THEMES dabei, die Möglichkeiten moderner Werkzeuge zu nutzen. Dies wird möglich, da wir sämtliche Konfigurationen eines Themes nicht in der Datenbank verwalten, sondern in Dateien auslagern . Jedes Theme wird daher komplett in einer festgelegten Dateistruktur gespeichert und als TYPO3-CMS-Erweiterung installiert. So kann jedes Theme wie eine beliebige andere TYPO3-Erweiterung verwaltet werden. Dies schließt selbstverständlich Versionierungssysteme wie GIT oder eine Veröffentlichung über das TYPO3-Extension-Repository ein.

Die Ablage von Themes in Dateien erlaubt daher auch die Nutzung von Deploymentsystemen wie Jenkins oder Gitlab CI . Durch Vererbung können Themes zusätzlich von Base-Packages abgeleitet und damit die Entwicklungskosten weiter reduziert werden.

Derzeit ist nur das Basispaket für Bootstrap 3 verfügbar, allerdings können relativ einfach auch andere Frameworks eingebunden werden. Durch diese standardisierten Basis-Themes kann natürlich ebenfalls von einem Frontend-Framework auf ein anderes gewechselt werden, ohne jeweils alle Inhalte neu erstellen oder migrieren zu müssen.

Kapitel 3. Die THEMES-Erweiterung installieren

Im Folgenden zeigen wir, wie die THEMES-Erweiterung und die ersten Themes mit den zugehörigen Abhängigkeiten installiert werden.

Damit Sie die Erweiterung installieren können, benötigen Sie zunächst ein lauffähiges TYPO3 CMS 6.2 LTS, am besten mit einer Datenbank im unveränderten Auslieferungszustand. Diesen Zustand erreicht man, indem man die TYPO3-CMS-Quellen via FTP/SSH auf einen Webspace mit PHP 5.3+ und MySQL-Support hochlädt. Danach rufen Sie das Setup auf. Da sich bereits mehrere Bücher mit dem Thema der TYPO3-Installation auf einem Webserver beschäftigen, gehen wir hier nicht detaillierter darauf ein.

Anmerkung

Ausführliche Hinweise zu Download und Installation von TYPO3 finden Sie auf der offiziellen TYPO3-Download-Seite unter:

http://typo3.org/download/

Für die Installation des ersten Themes gibt es mehrere Möglichkeiten. Zum einen ist es denkbar, eine TYPO3-Distribution zu nutzen, die bereits für THEMES vorbereitet wurde. Zum anderen können die nötigen Erweiterungen einzeln installiert werden. Damit können Sie genau auf die Anforderungen der jeweiligen Installation eingehen. Sie können aber auch unsere virtuelle Entwicklungsmaschine nutzen.

Alle drei Varianten werden in den folgenden Abschnitten erklärt. Handelt es sich bei dieser Installation um Ihre ersten Schritte mit TYPO3 CMS, empfehlen wir die Installation als Distribution.

THEMES als Distribution installieren

Seit Version 6.2 bietet TYPO3 die Möglichkeit, Inhalte und komplette Konfigurationen mit einer Distribution zu installieren. Direkt im Anschluss an die Installation von TYPO3 CMS in einer Version ab 6.2 gibt Ihnen TYPO3 die Möglichkeit, eine Distribution zu installieren. Nutzen Sie diese Möglichkeit, falls Sie TYPO3 selbst installieren. Sollte die Installation bereits bestehen, nutzen Sie zum Installieren bitte den Erweiterungsmanager.

In der Menüleiste des Erweiterungsmanagers wählen Sie den Punkt Vorkonfigurierte Distribution erhalten (siehe Abbildung 3.1).

Öffnen Distributionsliste
Abbildung 3.1 Öffnen Distributionsliste

Wie in Abbildung 3.2 zu sehen, können Sie dann die gewünschte Distribution auswählen.

Installation der Themes Distribution
Abbildung 3.2 Installation der Themes Distribution

Ein Klick auf Distribution installieren richtet die Distribution nun auf Ihrem System ein. Dabei werden gegebenenfalls vorhandene Beispielinhalte importiert und auch die nötigen Erweiterungen installiert, so dass dieser Vorgang eine Weile dauern kann.

Während der Installation werden einige Erweiterungen installiert. Diese haben verschiedene Aufgaben und können jeweils auch solo in TYPO3-CMS-Projekten eingesetzt werden. Zwei der installierten Erweiterungen enthalten jeweils ein Theme, und zwar theme_bootstrap und theme_bootstrap_slate . Im mit der Distribution gelieferten Seitenbaum befindet sich eine Seite mit einem kleinen orangefarbenen Symbol auf dem Icon (siehe Abbildung 3.3). Auf dieser Seite können Sie im Backend-Modul Themes das Theme für das Frontend auswählen.

Seiten im Seitenbaum mit einem Theme
Abbildung 3.3 Seiten im Seitenbaum mit einem Theme

Das THEMES-Framework als einzelne Erweiterungen installieren

Das THEMES-Framework besteht aus einigen Erweiterungen, die zum Teil voneinander abhängig sind. Mit der Verteilung der Funktionalität auf verschiedene Erweiterungen ist es möglich, diese auch in anderen Projekten wiederzuverwenden, die unter Umständen ohne THEMES arbeiten.

In den Abhängigkeiten sind auch themes_gridelements und gridelements selbst enthalten, die die Standardstrukturen für unsere Themes liefern. Mithilfe dieser Standardstrukturen ist es möglich, Themes später auszutauschen, wobei dadurch nur die Ausgabe im Frontend verändert wird und im besten Fall keine Inhalte angepasst werden müssen.

Für die ersten Schritte mit THEMES bietet sich die Installation von zwei Erweiterungen an, dies sind THEMES und theme_bootstrap . Beide Erweiterungen bringen noch einige Abhängigkeiten mit, die TYPO3 CMS automatisch ohne Ihr Zutun installiert.

Tabelle 3.1 TYPO3-THEMES-Basiserweiterungen
ErweiterungAufgabe

themes

Fügt den Selektor im sys_template-Datensatz hinzu und ermöglicht es, Themes zu registrieren.

theme_bootstrap

Installiert das Bootstrap-Basis-Theme, von dem weitere Themes abgeleitet werden können.

Übersicht über verwendete Erweiterungen

Während der Entwicklung von THEMES haben wir großen Wert auf die Wiederverwendbarkeit unserer Arbeitsergebnisse in nicht direkt damit verbundenen Projekten gelegt, deshalb wurde viel Funktionalität in Erweiterungen ausgelagert. Diese Erweiterungen können meistens ohne zusätzliche Abhängigkeiten in Ihren eigenen Projekten verwendet werden.

Tabelle 3.2 TYPO3-Erweiterungen, die als Abhängigkeit mitinstalliert werden
ErweiterungAufgabe

gridelements

Ermöglicht die Strukturierung von Inhalten.

t3jquery

Vermeidet Konflikte bei Mehrfachnutzung von jQuery und verwandten Bibliotheken .

dyncss(.*)

Ermöglicht die Verwendung von LESS und SASS in Themes und die Konfiguration in TypoScript .

vhs

Ist eine Sammlung von sinnvollen ViewHelpern, die in einigen Themes genutzt werden .

Installation

Die Installation des kompletten THEMES-Frameworks mit einem Theme erfolgt am besten über den TYPO3-CMS-Erweiterungsmanager . Der Erweiterungsmanager ist für TYPO3-CMS-Administratoren über das Modul Adminwerkzeuge → Erweiterungsmanager erreichbar (siehe Abbildung 3.4). Im Untermodul Erweiterung hinzufügen können Sie entweder nach allen oben aufgeführten Erweiterungen suchen und diese schrittweise manuell installieren, oder Sie installieren nur die Erweiterung theme_bootstrap, für die TYPO3 die oben aufgeführten Abhängigkeiten automatisch mitinstalliert.

Themes im Erweiterungsmanager
Abbildung 3.4 Themes im Erweiterungsmanager

Weitere Themes können Sie jederzeit über den Erweiterungsmanager installieren. Diese Themes erscheinen dann im Backend-Modul Web → Themes, wo sie für die gewünschten Teile des Seitenbaums aktiviert werden können. Es besteht also prinzipiell die Möglichkeit, mehrere Webseiten in einer einzigen TYPO3-CMS-Instanz zu verwalten und für jede Seite ein anderes Theme zu verwenden.

THEMES als Entwicklerversion via GIT installieren

Für die automatische Installation einer kompletten Testumgebung von THEMES mit einem aktuellen TYPO3 stellt das Entwicklerteam eine Vagrant-Box bereit, die es ermöglicht, THEMES ohne viel Konfigurationsaufwand zu testen und direkt an THEMES mitzuarbeiten.

Warnung

Für die Ausführung der virtuellen Maschine benötigen Sie eine Laufzeitumgebung. Diese umfasst GIT, Vagrant und Virtualbox, die für alle gängigen Betriebssysteme verfügbar sind.

Diese Form der Installation setzt Grundkenntnisse im Umgang mit GIT, Vagrant, Virtualbox und Linux voraus, weswegen diese Form der Installation hauptsächlich für Entwickler geeignet ist.

Das GIT-Repository mit der Konfiguration der virtuellen Maschine ist auf http://typo3-themes.org verlinkt. Außerdem findet sich in dem Repository eine einfache Anleitung zum Starten der Maschine.

Im Folgenden gehen wir davon aus, dass GIT, Vagrant und Virtualbox erfolgreich auf Ihrem Hostsystem installiert wurden.

Zum Installieren der virtuellen Maschine führen Sie die Befehle in Listing 3.1 aus. Mit diesen Kommandos wird ein neuer Ordner mit dem Namen ThemesVM erstellt, die Konfiguration geladen und die virtuelle Maschine gestartet und initialisiert.

# Auschecken der Konfiguration
git clone https://github.com/typo3-themes/Vagrant.Themes.git ThemesVM

# Wechseln in den Ordner, der gerade von GIT erzeugt wurde
cd ThemesVM

# Starten der VM
vagrant up

# Browser auf der folgenden IP öffnen: http://192.168.31.16/
Listing 3.1 Installation der virtuellen Maschine

Nach einigen Minuten Wartezeit steht Ihnen eine komplette Testumgebung zur Verfügung. Vagrant kümmert sich dabei um die Installation und das Setup eines kompletten Linux-Systems, sodass Sie alle Funktionen ausprobieren können. Am Ende der Installation wird die IP-Adresse, mit der Sie im Browser auf die VM zugreifen können, ausgegeben.

Warnung

Auf einem Windows-Hostsystem sind für die Installation und den Betrieb der VM unter Umständen Administratorrechte erforderlich, sodass wahrscheinlich während des Erstellens der virtuellen Maschine User-Account-Control-Meldungen auftauchen werden. Bitte bestätigen Sie diese mit »ok«.

Hinweise für eigene Deployments

Es ist auch möglich, die virtuelle Maschine als Basis für eigene Deployments zu nutzen.

Um alle benötigten Erweiterungen zu installieren, gibt es ein Shell-Skript, das den aktuellsten Entwicklungsstand aus den jeweiligen GIT-Repositories herunterlädt. Dieses Shell-Skript liegt im Ordner serverdata/provision/install-extensions.sh und installiert alle Erweiterungen in den aktuellen Ordner. Damit es in Ihrer Umgebung eingesetzt werden kann, müssen Sie also vor dem Ausführen des Skripts in den gewünschten Ordner wechseln.

Auf Github sind auch die Kochrezepte für das Deployment mit TYPO3.Surf zu finden, sodass die automatisierte Einrichtung noch einfacher wird. Diese nutzen wir zum Beispiel für die Demo-Internetseite rund um THEMES.