Zum Inhalt springen

Page ID und Content ID in Tabelle speichern

Erstellt am 16. Januar 2012 · 9 Antworten · letzte Antwort am 17. Januar 2012

Tags: Inhaltselemente, Frage

Rey ·

Hi,
ich möchte einen Plugin schreiben, der mir beim anlegen eines neuen Content Elements die dazugehörige PageId in eine Tabelle speichert oder diese direkt in tt_content einträgt als weiteres feld.
während ich im Kickstarter war ist mir jedoch aufgefallen was solch ein Plugin ja immer aufgerufen werden muss bzw. in tt_content eingebunden werden muss.
Weiß jemand einen Workaround? Schließlich soll dieser Plugin automatisiert die page id in das feld eintragen.
Der Ablauf wäre also so:
User legt ein tt_content element an
Speichert es ab
Die Page Id des Content elements wird in die erweiterte Spalte geschrieben.

aemka ·

Du weißt schon, dass TYPO3 eh schon ein Logging dafür im Backend hat, auf das du zugreifen könntest?

Ansonsten würde ich mich in einen TCA Hook beim Speichern der Elemente einklinken und darüber deine eigene Tabelle befüllen.

Rey ·

also ich habe in die ext_emconf das eingetragen

$EM_CONF[$_EXTKEY] = array(
	'title' => 'pages_content',
.
.
.
);
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'EXT:' . $_EXTKEY . '/hooks/class.tx_extkey_hooks_tce.php:hook_processDatamap_afterDatabaseOperations';

und habe dann eine klasse angelegt in dem unterordner hooks

class tx_extkey_hooks_tce {
    	function hook_processDatamap_afterDatabaseOperations(&$hookObjectsArr, &$status, &$table, &$id, &$fieldArray) {
			// Process hook directly:
		ob_start(); 
 
			echo "<pre>INCOME FIELD ARR  ";
			var_dump($fieldArray);
			file_put_contents('log.txt', file_get_contents('log.txt') . "\n" . ob_get_contents()); 
			echo "</pre>";
 
			echo "<pre>TABLE  ";
			var_dump($table);
			echo "</pre>";
 
			echo "<pre>ID  ";
			var_dump($id);
			file_put_contents('log2.txt', file_get_contents('log2.txt') . "\n" . ob_get_contents()); 
			echo "</pre>";
 
			echo "<pre> TECE MAIN ";
			var_dump($hookObjectsArr);
			file_put_contents('log3.txt', file_get_contents('log3.txt') . "\n" . ob_get_contents()); 
			echo "</pre>";
			
			echo "<pre> status ";
			var_dump($status);
			file_put_contents('log3.txt', file_get_contents('log3.txt') . "\n" . ob_get_contents()); 
			echo "</pre>";
			ob_end_close(); 
 

    }
 
}

habe extra ein paar text Dateien erstellt um zu sehen ob er da was rein schreibt tut er aber nicht.
was für mich bedeutet es wird nicht aufgerufen.

ps: in extKey steht natürlich mein Extkey name

aemka ·

die hook-registrierung kommt nicht in die ext_emconf, sondern ext_localconf, so wie in dem Link beschrieben und dann sollte es passen.

Rey ·

Ja ich habe alle caches gelöscht. ich habe es mal als zip in den anhang gelegt.
ich hatte ex_localconf.php gehabt anstelle von ext_localconf.php
Es wird nun aufgerufen aber ich bekomme die Meldung
"hook_processDatamap_afterDatabaseOperations' was not prepended with user_"

hfu_pages_content.zip
13kB