Typo3 Extensions mit Extbase und Fluid – Die Grundlagen

Das Thema mit Typo3 Extensions ist für viele ein reines Versuchsfeld. Deswegen möchte ich hier ein Tutorial schreiben, das die Extension Entwicklung mit Extbase und Fluid ‚from the Scratch‘ durchleuchtet. Für den ein oder anderen mag es etwas zu ausgiebig sein. Meine Erfahrungen zeigen jedoch, dass die Fragen, die sich niemand zu trauen wagt, meist die größten Hürden darstellen. Dank des Extension Builders ist es einfach eine Basis Extension zu erstellen, aber wenn es um die Anpassungen im Detail geht, dann bleibt man oft hängen. Das Fazit kann hier nur sein, einfach einmal Extensions von Anfang an selbst zu entwickeln, um die Funktionsweise und Arbeitsweise in Typo3 zu verstehen.

Also fangen wir einfach an aus dem Nichts eine Extension zu erstellen. Hier wird es gleich etwas trocken, da wir die Grundstruktur einer Extbase Extension kennen müssen, bevor wir loslegen.

Eine Extbase Extension hat in der Ordner Hierarchie und der Datei-Struktur immer den gleichen Aufbau. So kann Typo3 automatisch alle standardisierten Klassen in das System integrieren.

Die Grund-Struktur einer Extension besteht aus folgendem Aufbau:

  • Extension Folder
    • Classes
      • Controller
      • Domain
        • Model
        • Repository
      • ViewHelpers
    • Configuration
      • FlexForms
      • TCA
      • TypoScript
    • Resources
      • Private
      • Public
    • ext_emconf.php
    • ext_localconf.php
    • ext_tables.sql
    • ext_tables.php
    • ext_icon.gif

Hier sehen wir schon einen riesigen Berg von leeren Ordnern, die aber in der Entwicklung recht schnell gebraucht und erweitert werden. Die Struktur ist bei näherem Hinsehen dennoch sehr klar und eindeutig. Dies werden wir im Verlauf dieser Reihe noch genauer betrachten.

Verschaffen wir uns den ersten Überblick. In der Grundebene gibt es drei Hauptordner:

– Classes: In diesem Ordner werden alle Controller Actions und Datenbank-Anbindungen geregelt sowie die Models implementiert.
– Cofiguration: Dies ist der Ort an dem sich alle Konfigurations-Dateien der Typo3 Steuerung der Extension befinden.
– Resources: Hier werden nun alle Ressourcen wie Templates, Sprachdateien, CSS und JS verwaltet.

Im Root befinden sich noch die wichtigen PHP-Dateien, die je nach Projekt benötigt werden:

– ext_emconfig.php (‚Extension Manager/Repository config file‘): Diese Datei beinhaltet die allgemeinen Informationen zur Extension und dient zur Erkennung durch den Extension Manger. Sie ist das Bindeglied zu Typo3 und muss vorhanden sein.
– ext_localconf.php: Diese Datei bildet eine Erweiterung der Typo3 Hauptkonfiguration, welche in der ‚LocalConfiguration.php‘ definiert ist. Hier können Typo3 Konfigurations-Variablen gesetzt oder überschrieben und statische Templates ergänzt werden.
– ext_tables.sql: Eine einfache SQL Datei, die alle SQL-Statements für das Erstellen und Updaten der benötigten Datenbank-Tabellen der Extension beinhaltet.
– ext_tables.php: Durch diese Datei wird die Extension in das Typo3 Backend System eingefügt. Alle Anbindungen, wie zum Beispiel die Registrierung der Extension, die Intergration in den TCA (‚Table Configuration Array‘) oder die Einbindung von TypoScript, werden hier verwaltet.
– ext_icon.gif: Das optionale Extension Icon

Nach diesem kleinen groben Kurzüberblick, wird es Zeit, sich alle aufgeführten Komponenten bei der Entwicklung einer Beispiel Extension näher zu betrachten.

Dabei werden wir auch sehen, dass nicht immer alle Komponenten benötigt werden. In einigen Fällen reicht es aus, eine Extension ohne Model oder erweiterter Datenbank-Anbindung zu entwickeln, z.B. bei einem Custom Content Type oder einem Typo3 Fluid Template.  Genau damit startet der nächste Schritt dieser kleinen Odyssee durch die Welt der Extbase Entwicklung.

Als kleiner Lesetipp für alle, die Nachts nicht schlafen können: Das komplette Typo3 CMS durch die Hintertür.