Hooks

Arbeiten mit Hooks

Eventuell möchte man bei einer TYPO3 Extension eine Funktion oder eine Datenausgabe nutzen, dann hat man manchmal, so der Programmierer es gewollt hat, einen Hook zur verfügung.
Ein Hook wurde vom Entwickler für den Zweck des Zwischen Auslesens gesetzt.

Hier ein paar Erfahrungen zu diesem Thema

"Hook"s (engl. Haken) beschreiben die wundervolle Möglichkeit in Typo3 sozusagen an vordefinierte Funktionen etwas "dranzuhängen" sobald etwas Bestimmtes passiert. In den Typo3 - Libaries gibt es bereits viele solche vorgefertigte "Haken" mitgeliefert.

Folgender Hook soll immer dann ausgeführt werden, wenn im Shop (tt_products) ein Content-Element erzeugt wird, um dann xml - Dateien an ein externes Statistiktool zu schicken, wenn ein neues Produkt erzeugt wurde.
Für das 'Anhängen' meiner Funktion verwende ich den "Haken" "class t3lib_tcemain." in der t3lib von Typo3. Dort gibt es die Funktion "process_datamap", die ausgeführt wird, wenn ein Typo3 - Content im BE erzeugt wird.

Diese Funktion hatte einen eingebauten Hook, nach dem ich einfach meine neue Funktion benannt habe.
Also habe ich meine Methode in eine Klasse gepackt, siehe unten:

class tx_myextension_tcemainprocdm {

function processDatamap_postProcessFieldArray ($status,$table,$id,&$fieldArray,&$reference) {

$fieldArray['hidden'] = 1;
echo "hallo";
}}


...und dann als "class.tx_myextension_tcemainprocdm.php" im Root der Extension abgespeichert.
Dann in der Datei "ext_localconf.php" der Extension die Klasse "angemeldet":

$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'EXT:tt_products/class.tx_myextension_tcemainprocdm.php:tx_myextension_tcemainprocdm';


Und schon wird die Funktion ausgeführt, wenn im BE ein Content erzeugt wird. Zum Schluss lese ich den Request Array aus und mache eine Bedingung mit "if", damit die Methode nur dann ausgeführt wird, wenn ein Shop - Inhalt erzeugt wird.