Kickstart eine TYPO3 Extension Teil 2

Im zweiten Teil des Tutorials zum Kickstart einer Extension, werden wir an dem gelernten anknüpfen und eine Extension gemeinsam anlegen und uns anschauen welche Dateien vom Extension Builder erzeugt werden.
Ich zeige dir anhand der erzeugten Verzeichnisse und Dateien das MVC Modell in Extbase und welche Prozesse durchlaufen werden bei einem Request. Darüberhinaus stelle ich dir die zentrallen Konfigurationsdateien in einer TYPO3 Extension vor.

Dazu gehen wir in das TYPO3 Backend und öffnen den Extension Builder. Dort wechseln wir in das Domain Modelling. Diese Ansicht kennst du bereits aus dem ersten Teil des Tutorials.

Extension Builder: Domain Modelling

Jetzt wollen wir auf der linken Seite alle nötigsten Eingaben machen, um eine Extension erzeugen zu können. Dazu geben wir folgendes ein:

  1. Extension title: Slavlee Campus Kickstart
  2. Vendor name: Slavlee
  3. Key: slavlee_campus_kickstart
  4. Description: Example extension from the Tutorial series: Kickstart eine TYPO3 Extension

Wir gehen im Anschluss zum Bereich: Authors und fügen einen hinzu:

  1. Name: Kevin Chileong Lee
  2. Role: Developer
  3. Email: campus@slavlee.de
  4. Company: Slavlee

Damit haben wir die nötigsten Informationen erstellt. Diese Extension können wir bereits speichern und der Extension Builder wird uns die notwendigen Verzeichnisse und Dateien automatisch generieren.Wir drücken auf speichern und bestätigen den Dialog.

Der Extension Builder hat jetzt im Verzeichnis: typo3conf/ext unsere Extension abgelegt. Diese ist noch nicht installiert und somit inaktiv. Wir wollen uns nun einmal anschauen, welche Verzeichnisse und Dateien angelegt wurden. Dafür öffnen wir uns einmal die Extension in einer Entwicklungsumgebung.

Das sieht dann wie folgt aus:

Extensionverzeichnis in TYPO3

Eine Extension in TYPO3 besteht aus einer Vielzahl von Verzeichnissen und Dateien. Es gibt zwei zentrale Konfigurationsdateien, die eine Extension für das Backend und für das Frontend konfiguriert.
Die ext_localconf.php enthält alle Konfigurationen um die Extension für das Frontend vorzubereiten. Für das Frontend sind vor allem Frontend Plugins interessant. Diese werden in dieser Datei konfiguriert. Darüberhinaus werden hier auch Hooks und Signals angemeldet.
Die andere wichtige Konfigurationsdatei konfiguriert die Extension für das Backend. Es ist die ext_tables.php. Auch hier müssen Frontend Plugins registriert werden, da diese im Backend als Inhaltselemente angelegt werden müssen. In dieser Datei werden beispielsweise auch FlexForms registriert.

Die Extensionentwicklung in TYPO3 basiert auf Extbase und Fluid. Extbase übernimmt den Controller und Model Teil und Fluid den View Teil im MVC Modell. Der entscheidende Ausgangsordner für den Controller und Model Teil ist der Classes Ordner. Alle Extbase Klassen müssen sich unter diesem Ordner befinden. 
Der View Teil befindet sich unterhalb des Resources/Private Ordners. Dort gibt es klassischerweise eine Unterteilung in

  1. Layouts
  2. Templates
  3. Partials

Diese Unterteilung dient zur Gliederung und Wiederverwendbarkeit von Fluid Codeteile.

Du hast vielleicht bemerkt, dass es den Classes Ordner in unserem Beispiel nicht gibt. Dieses müssen wir manuell erstellen:

Extensionverzeichnis mit Classes Ordner

Dieses Verzeichnis wird nur dann vom Extension Builder automatisch erstellt, wenn man ein Model erstellt. Wir können das uns anschauen. Wir löschen wieder die manuell erstellen Ordner: Classes und deren Unterordner. Danach gehen wir wieder in das Domain Modelling und laden unsere Extension:

Extension Builder: Extension laden

Dann erstellen wir ein neues Model und nennen es FrontendUser:

Extension Builder: Create Frontenduser Model Object

Danach speichern wir unsere Extension und aktualisieren das Extensionverzeichnis in unserer IDE. Nach der Aktualisierung sehen wir, dass der Extension Builder automatisch den Ordner: Classes erstellt hat und darunter Domain/Model das Model Object als Klasse abgelegt hat.

Extensionverzeichnis: Model Object FrontendUser

Du siehst, der Extension Builder ist in der Lage dir viel Arbeit abzunehmen. Die Erstellung vieler Verzeichnisse und Dateien als auch Konfigurationseinstellungen werden automatisch erstellt. Du kannst dich ganz alleine auf die Algorhytmik deiner Extension konzentrieren.

Wie hängt das alles zusammen?

In der Regel besitzt eine Extension mindestens ein Frontend Plugin. Dieses Plugin wird dann im Backend platziert und im Frontend angezeigt. Für die Anzeige im Frontend muss der Code im Frontend Plugin ausgeführt werden. In der ext_localconf.php definiert man bei der Registrierung des Plugins auch ein Default - Controller und Default - Action Funktion. Die Ausführreihenfolge ist wie folgt:

  1. Controller wird ausgeführt
    1. dieser startet Prozesse
    2. und kann unter anderem das Model nutzen um Daten aus der Datenbank zu lesen oder zu schreiben
    3. und delegiert die anzuzeigende Daten an die View
  2. Diese Daten gehen an ein Template, welches mit dem Controller und der Action verknüpft ist
    1. das Template kann zur Anzeige der Daten:
      1. ein Layout
      2. und beliebig viele Partials nutzen

Obwohl es MVC, also Model View Controller Modell heisst, bedeutet es nicht, dass dies auch die Reihenfolge der Abarbeitung ist. Tatsächlich ist der Controller das Herzstück, welcher die Arbeiten an die Model und die View delegiert. Die letzte Instanz ist dann immer die View, welche für die Anzeige im Frontend verantwortlich ist. In TYPO3 ist das Fluid.

Die Beispielextension kannst du hier herunterladen.

Ich hoffe dadurch ist es etwas klar geworden, wie eine TYPO3 Extension aufgebaut ist und arbeitet. Es gibt natürlich noch viel mehr Möglichkeiten und noch weitere wichtige Ordner. Zur Einführung möchte ich es hierbei belassen. Die Videoversion dieses Tutorials findet auf meinem YouTube Kanal.

Vielen Dank für deine Aufmerksamkeit.

Lerne ein TYPO3 V9 Template zu programmieren

Erstelle professionelle TYPO3 Templates.

Du wirst unter anderem lernen:

  • Erstellung eines TYPO3 Templates als eigenständige Extension
  • Erstellen von eigenen Inhaltselementen
  • Erstellen von Backend Modulen

Ich zeige dir ebenfalls, wie du deinen Redakteuren die Möglichkeit geben kannst, Einfluss auf das TYPO3 Template zu nehmen.

Du erhälst weltweiten Zugriff auf allen Geräten mit einer einmaligen Buchung. Es gibt keine versteckten Kosten oder Abofallen! Alles einfach und transparent dank Udemy.

Hier geht es zum Kurs