Manchmal hasst man TYPO3 für diese Funktionsnamen. Wenn man dann durchschaut hat, was damit gemeint ist, verliebt man sich wieder in das riesen CMS. In diesem Beitrag will ich erklären wie es dank Hooks und dem TCEMain Objekt möglich wird, in die TYPO3 internen Speicherfunktionen zu kommen. Das braucht man für seine eigenen Extensions oder wenn man vor dem Speichern die Daten manipulieren möchte.
Ein Artikel von Paul Lunow, erschienen 2008 auf Interaktionsdesigner.de.
Zuletzt überarbeitet am von
Denkst Du darüber nach zu gründen? Eine Familie oder ein Startup oder beides? In der zweiten Staffel meines Podcasts spreche ich mit tollen Menschen genau darüber. Lass Dich inspirieren und abonniere meinen Podcast: Auf Apple Podcast, Spotify und auf www.gründerväter.net.
Vorne weg sei gesagt, dass Robert Lemke schon ein ausführliches, englisches Tutorial geschrieben hat welches die Sache sehr gut und ansehnlich erklärt. Wer nicht so viel Zeit hat oder keine Lust auf Englisch, dem wünsche ich viel Spaß!
Wir brauchen eine neue Datei in der wir unsere eigene Funktionalität festhalten. Diese braucht eine einzige Funktion, welche schon im Titel erwähnt ist: processDatamap_postProcessFieldArray.
class tx_EXTNAME_tcemainprocdm {
function processDatamap_postProcessFieldArray($status, $table, $id, &$fieldArray) {
// ACTION!
}
}
EXTNAME ist hier wie im folgenden stets entsprechend anzupassen. Wir erstellen also eine Funktion die eine ganze Reihe Parameter bekommt. Bei Robert Lemke hat sie auch noch ein &$this als letzten Parameter, da hat er bei mir aber rumgemeckert. $status beinhaltet die gewählte Aktion (z.B. “update” oder “insert”). In $table steht die Tabelle um die es geht. Und $id kennzeichnet den betreffenden Datensatz. Reicht für meine Zwecke.
Dafür wechseln wir in die Datei ext_localconf.php und fügen eine Zeile hinzu, welche unsere Klasse referenziert:
$GLOBALS["TYPO3_CONF_VARS"]["SC_OPTIONS"]["t3lib/class.t3lib_tcemain.php"]["processDatamapClass"][] = "EXT:EXTNAME/class.tx_EXTNAME_tcemainprocdm.php:tx_EXTNAME_tcemainprocdm";
Der Datei t3lib_tcemain.php wird also unser Hook zugeteilt. Es ist darauf zu achten das dem Array ein neues Element hinzugefügt wird und durch das Konstrukt Dateipfad:Klassenname die Einbindung mittels require entfällt. Praktisch!
Nichts leichter als das. Wenn man mit Echo in der eigenen Funktion etwas ausgibt erscheint es nach dem Speichern eines Datensatzes über der Leiste mit den Speichernknöpfen, also keine Hemmungen und viel Spaß mit dem Logikmonster TYPO3!