Zum Inhalt springen

Neben Tabelleninhalt beim Speichern auch Datei schreiben

Erstellt am 8. Juli 2011 · 2 Antworten · letzte Antwort am 8. Juli 2011

Tags: Frage

Silkea ·

Hallo!

Ich bin nicht sicher, ob das Problem hierher passt, weiß aber auch nicht, wonach ich suchen soll.

Ich habe eine Extension für einen Videoplayer angepasst. Dieser Player benötigt eine XML-Playlist. Momentan erstelle ich diese jedes Mal neu, wenn die Seite, die das Plugin enthält, aufgerufen wird, aber das ist natürlich nicht besonders elegant, denn die Playlist ändert sich ja nur dann, wenn ein Inhaltselement neu erstellt oder geändert wird. Deshalb würde ich die Playlist gerne schon dann schreiben, wenn die neuen/geänderten Daten des Inhaltselementes in die Tabellen geschrieben werden. Ist das möglich? Wo / wann muss ich den Code einfügen? Tipps zu entsprechenden Links/Tutorials sind natürlich auch willkommen.

Vielen Dank schonmal im Voraus,
Silke

vince ·

Hallo,

Es gibt einen "hook", mit dem man nach dem Speichern auf die Eingabe reagieren kann.

Das Ding heißt 'processDatamapClass'.

Wird so eingetragen (ext_localconf):

require_once('pfad/zur/class.tx_deineklasse');
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'tx_deineklasse';

Dann noch die Klasse 'tx_deineklasse' implementieren.
Wichtig:
- der Klassenname muss mit tx_ anfangen
- der Dateiname muss lauten class.tx_

class tx_deineklasse {
public function processDatamap_afterDatabaseOperations($status, $table, $id, &$fieldArray, &$reference) {
   if ($table == 'deine_tabelle') {
             //dein Code
   }
}
}

In dem Parameter $id steht die uid von dem Bearbeiteten Eintrag drinn, das funktionniert allerdings nur beim upadte.
Bei einem vollkommen neuen Eintrag kannst Du die uid über $reference->substNEWwithIDs[$id] auslesen.
$status ist ein String, entwerder "new" oder "update"...

Hoffentlich war's das, was Du gesucht hast..

Vince.

Silkea ·

Hallo Vince,

vielen Dank! Das hört sich genau nach dem an, was ich suchte.

Viele Grüße,
Silke