Zum Inhalt springen

insert_id von tt_news

Erstellt am 19. März 2008 · 3 Antworten · letzte Antwort am 20. März 2008

Tags: tt_news, Frage

laser ·

Hi,

ich greif über processDatamapClass in den "Speicher"-Prozess der tt_news ein. Jetzt brauch ich aber bei einem neuen News-Eintrag die ID der News, wie komme ich da jetzt ran?

Empfangen tu ich das wie folgt:

function processDatamap_postProcessFieldArray ($status, $table, $id, &$fieldArray, &$this) {
  if($table == 'tt_news') {
    if($status == 'update') 
    {
      // bla ...
    } 
    elseif ($status == 'new') 
    {
      // blub 
    }
  }
}

Also den Bereich "blub" mein ich jetzt. In $id steht nur eine Zeichenfolge, bestehend aus Zahlen und Buchstaben. $fieldArray usw. kann man auch knicken.
$GLOBALS['TYPO3_DB']->sql_insert_id()
bringt auch nichts.

Ich hoffe ich habe es verständlich rüber gebracht, danke im Voraus!

digedag ·

Also ich hab die einzelnen Hook-Methoden jetzt nicht so im Kopf. Aber die postProcessFieldArray() wird noch vor dem Speichern in die Datenbank aufgerufen. Es gibt noch eine weitere Methode, die heißt irgendwas mit afterDatabaseOperations(). Diese wird aufgerufen, nachdem der Datensatz gespeichert wurde.

Den Zugriff auf die neuen UIDs liefert dir die TCE. Diese bekommst du immer mit dem letzten Parameter der Methode geliefert. In deinem Beispiel wäre das $this. Den solltest du auf jeden Fall umbenennen, weil $this in PHP reserviert ist! Wenn der Parameter also bspw. $tcemain heißt dann hilft dir dieser Aufruf:

$uid = $tcemain->substNEWwithIDs[$dummyUid];

Die $dummyUid ist die Zeichenkette, die mit NEW beginnt.

laser ·

Danke, hat mir geholfen!

Genaue Name ist: processDatamap_afterDatabaseOperations

Ich habe noch eine andere Frage. Ich habe für das Backend-Plugin jetzt eine "ext_typoscript_setup.txt" angelegt, aber irgendwie bekomm ich es nicht hin die einzulesen.

Gibt es da für Backend-Plugins eine andere Lösung? Im TCA ist es auch nicht ..

Muss ich da jetzt eigtl. in der ext..setup.txt "plugin.tx_extkey_tcemainprocdm { }" (wie Klassenname) oder "plugin.tx_extkey { }" verwenden?

Ich hab ja auch keine Main-Methode oder so, wie üblich bei FE-Plugins. Wenn ich mir eine mache, wird die ja auch erst garnit aufgerufen.

laser ·

Hab es !

ext_conf_template.txt angelegt und in der PHP-Datei dann:

$this->conf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['extkey']);

Danke nochmal!