Die Verzeichnisstruktur von TYPO3 Extensions

Für die Entwicklung eigener Extensions rate ich von der Nutzung des Extensionbuilder ab. Dort können in der Regel sowieso nicht alle Funktionalitäten und Verknüpfungen abgebildet werden - und, wer einmal seine Extension von Grund aufgebaut hat, weiss was in welcher Datei und warum steht.

Eine Ausnahme mögen vielleicht Projekte mit übermäßig vielen Datenfeldern sein, aber auch da hat der EXT Builder seine Grenzen.

Viele Klassen können in Extbase automatisch geladen werden, daher muss ein standardisierter Verzeichnisbaum innerhalb des Extensionverzeichnisses eingehalten werden:

- Meine Extension
-- Classes
---- Controller
---- Domain
------ Model
------ Repository
---- Hooks
---- ViewHelpers

-- Configuration
---- TCA
---- TypoScript
------ setup.txt 

-- Resources
---- Private
------ Layouts
------ Partials
------ Templates

---- Public
------ Css
------ Images
------ JavaScript
------ Fonts

-- ext_emconf.php
-- ext_icon.gif
-- ext_localconf.php
-- ext_tables.php
-- ext_tables.sql

Auf die Ordner und Dateien gehe ich auf den Folgeseiten detailliert ein, an dieser Stelle nur ein grober Überblick.

Extbase Extensions sind nach dem MVC Konzept (Model - View - Controller) ausgelegt. Das bedeutet eine strikte Trennung zwischen Business Logik und Template und - im TYPO3 Kontext - der Konfiguration. Dies macht eine Extension erst richtig "wartbar" - die Zeiten der kruden html / php Mischung in pi Extensions sind vorbei.

Verzeichniss Classes
Nach dem MVC Konzept enthält dieses Verzeichnis vor allem eure Business Logik. Also das "M" für Modell und das "C" für Controller aus dem Begriff MVC. Dort sind die Modells, Repositories und Controller zu finden. Daneben kommen hier sämtliche Hilfsklassen rein, wie z.B. Hooks und ViewHelpers.

Als grobe Fausregel, alles was php Dateien sind (mit Ausnahme der ext_*.php Dateien) sollte hier rein.

Verzeichnins Configuration
Das ist die Schnittstelle vom TYPO3 System zu eurer Extension. Im Setup Bereich werden hier Dinge wie Storage PID etc definiert. Die TCA Dateien stellen die Verbindung zur Datenbank dar. Weitere typische Dateien sind Flexforms, constants etc.

Verzeichnins Resources
Das Resources Verzeichnis wird nochmal grob in Private und Public unterschieden. Und, ihr ahnt es wahrscheinlich schon, im Privat Verzeichnis stehen die Templates (das "V" wie View aus dem MVC Konzept) und zum Beispiel eure language Files. Im public Bereich gehört all das, was auf der Webseite öffentlich benötigt wird - Fonts, Css, Javascript.

Die ext_*.php Files
Dies sind Dateien die TYPO3 unbedingt benötigt um mit eurer Extension richtig umgehen zu können. Angefangen von der ext_tables.sql ind der die Tabellen und Felder für die Datenbank definiert werden, über die ext_tables und local_config. Unscheinbar aber wichtig ist die ext_emconf.php Datei, dort sind die Informationen zusammengefasst damit der EXT-Manger im Backend überhaupt eure Extension erkennt.

Je nach Anforderung kann es noch eine Reihe weiterer Ordner geben, so z.B. für eine Dokumentation der Extension, unit-tests oder statische Funktionen.

Weitere Artikel zu diesem Thema:

Empfehlenswerte Lektüre:

TYPO3 Extbase: Moderne Extension-Entwicklung für TYPO3

Ein nahezu perfektes Buch für TYPO3 Extensionentwickler die mit Extbase und Fluid beginnen, aber auch erfahrene Entwickler finden noch Anregungen um ihre eigene Arbeit ständig zu verbessern. Sehr ausführlich, kurzweilig, kein Lesestoff für die Couch sondern eher ein Mitmachbuch das Spaß und Unterstützung bei der eigenen Extensionentwicklung bietet.

Kommentare

keine Kommentare vorhanden


Kommentar verfassen

Die Email Adresse wird nicht veröffentlicht.