TYPO3 lässt sich vielfältig erweitern, als Bordmittel für Modifikationen stehen auf PHP-Ebene Hooks und die XClass Funktionalität bereit. Hooks erlauben Eingriffe in den Verarbeitungsablauf der Daten an definierten Punkten. Mit XClass können gleich ganze Klassen überschrieben werden. Wie fast immer haben beide Lösungen Ihre Vorzüge und Schwächen. Hooks gelten als das Standardmittel für Erweiterungen. Der Einsatz von XClass im Allgemeinen ist nur dann ratsam, wenn Hooks, Services, userFunc oder bei ExtBase Erweiterungen auch SignalSlots nicht als Lösung in Frage kommen.
Was sind Hooks?
Hooks sind ein weit verbreitetes Konzept, neben TYPO3 wird dies auch in der Shoplösung Magento und dem Blog-CMS WordPress genutzt. Es handelt sich dabei um Schnittstellen, die mit eigenen Extensions genutzt werden können, um Daten oder den Programmablauf in Fremd-Extensions oder Core-Dateien zu manipulieren. Der eigentliche TYPO3- oder Extension-Code muss dazu nicht verändert werden.
Vorteile von Hooks
Hooks sind wartungsfreundlich: Updates, die Änderungen an einer Extension- oder Coredatei vornehmen, welche ein Hook bereitstellen, bleiben wirksam. Über das Hook wird lediglich eine Schnittstelle genutzt, die interne Verarbeitung bleibt im Hoheitsbereich der jeweiligen Extension oder Coredatei. So bleibt auf diesem Wege hierbei auch die Codequalität gewahrt. Bewährte und gegebenenfalls getestete Codeabschnitte verändert oder überschreibt der Einsatz von Hooks nicht. Eine ausführliche Dokumentation, wie Hooks in eigenen Extensions genutzt werden, gibt es unter http://typo3.org/documentation/article/how-to-use-existing-hooks-in-your-own-extension/ ebenso wie in zahlreichen TYPO3-Blogs.
Nachteile von Hooks
Werden Hooks genutzt, hängt der Programmablauf stärker als beim Überschreiben des ursprünglichen Codes von der Klasse ab, die die Schnittstelle bereitstellt. Es gibt zudem für Hooks kein vollständiges Verzeichnis. Wer diese Schnittstellen nutzen möchte, muss diese nicht selten von Hand im Quellcode suchen. Bewährt hat sich die Suche nach dem Wort „Hook“. Programme, die gleich ganze Dateien und Verzeichnisse scannen, können dabei besonders hilfreich sein. Ebenso ist die Extension dmc_hooklist eine Möglichkeit, die Suche zu vereinfachen.
Was ist XClass?
Mit XClass wird in TYPO3 ein Mechanismus bezeichnet, der es erlaubt, Klassen zu erweitern oder sogar zu überschreiben. Möglich ist dies bei bestimmten Core-Dateien als auch bei Extentions. Pro Klasse kann dabei nur eine XClass Implementierung verwendet werden.
Vorteile von XClass
Der Mechanismus ist sehr mächtig und kann genutzt werden, um umfangreiche Anpassungen vorzunehmen. Das gilt insbesondere für Fälle, in denen Hooks und andere Methoden nicht verfügbar sind oder für das gewünschte Programmverhalten nicht funktionieren.
Nachteile von XClass
Der Einsatz von XClass stellt einen tiefen Eingriff in den Extension- oder Corecode da. Durch Updates kann es sogar zu Programmunterbrechungen und schwereren Programmfehlern kommen. Beispielsweise muss für TYPO3 4.7 entwickelter XClass-Code beim Update auf Version 6.0 angepasst werden. Weitere Restriktionen gibt es ebenfalls für statische Klassen und Methoden. Mehr verrät die TYPO3 Wiki dazu.