Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03149.jsonl.gz/3033

Einen Contao HOOK einrichten
von Marco Simbürger
Das Einrichten eines Contao-HOOKs funktioniert eigentlich immer gleich. Je nach HOOK werden aber andere Parameter übergeben. Alle Informationen zu den jeweiligen HOOKs findest du in der Contao-Dokumentation: Contao-HOOKs
In der Dokumentation sind alle vorhanden HOOKs mit einer kurzen Beschreibung aufgelistet. Man kann sich nun für einen passenden HOOK entscheiden, der den gegebenen Anforderungen gerecht wird. Ich nehme für dieses Beispiel den processFormData-HOOK, da ich diesen schon sehr oft verwendet habe.
Wir sehen in der Dokumentation folgendes Beispiel:
// config.php $GLOBALS['TL_HOOKS']['processFormData'][] = array('MyClass', 'myProcessFormData'); // MyClass.php public function myProcessFormData($arrPost, $arrForm, $arrFiles) { // Beliebiger Code }
Für einen Contao-HOOK müssen immer zwei Dateien erstellt bzw. zwei Einträge gemacht werden:
- die Registration des HOOKs in der config.php
- Eine PHP-Datei mit einer Klasse und der Methode für die Logik des HOOKs
Wie der HOOK registriert werden muss und welche Parameter der Methode übergeben werden, kann man eben praktischerweise aus der Contao-Dokumentation herauslesen.
Im Prinzip legt man ein neues Contao-Modul mit zwei Dateien an (Die config.php und die Klasse mit der Logik).
Wir erstellen also unter /system/modules/ einen neuen Ordner für unser Contao-Modul und nennen diesen mal "myModule". Darin einen Ordner /config und da drin die Datei config.php. In dieser PHP-Datei registrieren wir jetzt den HOOK. Wir müssen dabei bereits angeben, wie die Klasse und die entsprechende Methode heissen. Wir nennen die Klasse z.B. "MyModuleClass" und die Methode für den processFormData-HOOK "myProcessFormData". Die Registration sieht dann wie folgt aus:
/system/modules/myModule/config/config.php
$GLOBALS['TL_HOOKS']['processFormData'][] = array('MyModuleClass', 'myProcessFormData');
Anschliessend erstellen wir im Modul-Ordner die Dateien für die Klasse und Methoden. Der Dateiname muss gleich sein wie der Klassennamen. Wir erstellen also eine Datei MyModuleClass.php und schreiben darin unsere Klasse und die Methode:
system/modules/myModule/MyModuleClass.php
class MyModuleClass extends Backend { public function myProcessFormData($arrPost, $arrForm, $arrFiles) { //Hier kommt dann die Logik für den Hook } }
Zum Schluss müssen wir noch die Autoload-Dateien erstellen. Die Autoload-Dateien sorgen dafür, dass alle notwendigen Klassen und Templates des Moduls im Contao-System registriert werden. Für die Erstellung der Autoload-Dateien bietet Contao von Haus aus ein praktisches Tool an. Wir wechseln dazu ins Contao-Backend und klicken unter "Entwickler-Tools" auf den Punkt "Autoload-Creator". Anschliessend wählen wir unser Modul aus (also den Modul-Ordner "myModule") und klicken danach auf den Button "Autoload-Dateien erstellen". Die Autoload-Dateien werden automatisch generiert. Sie befinden sich dann im config-Ordner des Moduls.
Somit ist der HOOK fertig eingerichtet.
(Ggf. muss unter Systemwartung noch der Interne Cache geleert werden.)