2012-11-23 18 views

Antwort

18

Diese Hooks in t3lib/class.t3lib_tcemain.php befindet

Die folgenden sind nur einige von denen:

  • processDatamap_preProcessFieldArray
  • processDatamap_postProcessFieldArray
  • hook_processDatamap_afterDatabaseOperations
  • processDatamap_afterAllOperations

In Ihrem Fall könnte ich "processDatamap_postProcessFieldArray" verwenden.

Beispiel, wie es in Ihrem ext_localconf.php enthalten:

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'EXT:your_extension/hooks/class.tx_yourextension_tcemain.php:tx_yourextension_tcemain'; 

Beispiel Klasse:

<?php 
    class tx_yourextension_tcemain { 
      function processDatamap_postProcessFieldArray($status, $table, $id, &$fieldArray, &$pObj) { 
       if($table == 'pages' && $status =='new') { 
        // do some stuff 
       } 
      } 
    } 
?> 

Mit $ table, können Sie überprüfen, welche Tabelle geändert wird. $ status können Sie die aktuelle Aktion abrufen, zum Beispiel "neu", "aktualisieren" oder "löschen".

Beispiel für TYPO3> 6 mit Namespaces auf einem anderen Haken:

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/tslib/class.tslib_menu.php']['filterMenuPages']['YourExtension\\Hook\\FilterMenuPages'] = 'EXT:your_extension/Classes/Hook/FilterMenuPages.php:YourExtension\Hook\FilterMenuPages'; 
+1

Danke! So habe ich nach stundenlangem Suchen und Testen nun auch gefunden. Eine kleine Änderung, ich benutze die 'processCmdmapClass' Hook und die' processCmdmap_deleteAction' i den Fall des Löschens. – FlorianX

+1

[Dies ist der aktualisierte Link für t3lib_tcemain.php (typo3 4.5)] (http://api.typo3.org/typo3cms/45/html/classt3lib___t_c_emain.html) – peter

+1

Danke, ich habe es meinem Beitrag hinzugefügt. – Shufla

0

Es gibt eine Erweiterung dmc_hooklist, die alle Haken auflisten. (Vor ein paar Jahren verwendet)

Oder werfen Sie einen Blick in t3lib/class.t3lib_tcemain.php gibt es die Haken, die Sie brauchen.

+0

Ich frage mich, warum meine Antwort usefull nicht? Erklärung möglich? – maholtz

+1

Hallo, die dmc_hooklist ist die "Standard" Antwort, aber diese Erweiterung funktioniert nicht auf meinem System. Sie haben die ersten Informationen zu Google angegeben, wenn jemand in diesem Thema sucht. Ich wollte mehr Details oder Best Practices erfahren.danke trotzdem – FlorianX

4

Für TYPO3 7.6 Version

schreiben folgende in ext_localconf.php

$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass']['extkey'] = 'Vendor\\Extension\\Hook\\TCEmainHook'; 
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass']['extkey'] = 'Vendor\\Extension\\Hook\\TCEmainHook'; 

erstellen Haken Klasse /Classes/Hook/TCEmainHook.php, Wählen Sie die entsprechende Funktion von unten Liste

<?php 
namespace Vendor\Extension\Hook; 

class TCEmainHook { 
    public function processCmdmap_preProcess($command, $table, $id, $value, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {} 
    public function processCmdmap_postProcess($command, $table, $id, $value, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {} 
    public function processDatamap_preProcessFieldArray(array &$fieldArray, $table, $id, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {} 
    public function processCmdmap_deleteAction($table, $id, $recordToDelete, $recordWasDeleted=NULL, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {} 
    public function processDatamap_afterAllOperations(\TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {} 
    public function processDatamap_postProcessFieldArray($status, $table, $id, array &$fieldArray, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {} 
    public function processDatamap_afterDatabaseOperations($status, $table, $id, array $fieldArray, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {} 
} 
Verwandte Themen