2012-11-23 15 views

Odpowiedz

18

Haki te znajdują się w t3lib/class.t3lib_tcemain.php

Oto tylko niektóre z nich:

  • processDatamap_preProcessFieldArray
  • processDatamap_postProcessFieldArray
  • hook_processDatamap_afterDatabaseOperations
  • processDatamap_afterAllOperations

W twoim przypadku myślę, że możesz użyć "processDatamap_postProcessFieldArray".

Przykład: jak umieścić go w swojej ext_localconf.php:

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

Przykład Klasa:

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

Z $ tabela, można sprawdzić, która tabela jest modyfikowany. $ status umożliwia pobranie bieżącej akcji, na przykład "nowy", "aktualizacja" lub "usuń".

Przykład TYPO3> 6 z nazw na innym haka:

$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

Dzięki! Jest to sposób, który znalazłem także po wielu godzinach poszukiwań i testów. Jedna niewielka zmiana, używam "hookera processCmdmapClass" i "processCmdmap_deleteAction" w przypadku usuwania. – FlorianX

+1

[To jest zaktualizowany link do t3lib_tcemain.php (typo3 4.5)] (http://api.typo3.org/typo3cms/45/html/classt3lib___t_c_emain.html) – peter

+1

Dziękuję, dodałem go do mojego posta. – Shufla

0

Istnieje rozszerzenie dmc_hooklist, które zawiera listę wszystkich haków. (używane kilka lat temu)

Lub zajrzyj do t3lib/class.t3lib_tcemain.php są potrzebne haki.

+0

Zastanawiam się dlaczego moja odpowiedź nie był przydatny? Możliwe wyjaśnienie? – maholtz

+1

Witaj, dmc_hooklist jest "standardową" odpowiedzią, ale to rozszerzenie nie działa w moim systemie. Podałeś pierwsze informacje w google, jeśli ktoś szuka w tym temacie. Chciałem dowiedzieć się więcej szczegółów lub najlepszych praktyk.dzięki i tak – FlorianX

4

Na TYPO3 7,6 wersji

zapisu następującej w 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'; 

Tworzenie klasy hak /Classes/Hook/TCEmainHook.php, wybrać odpowiednią funkcję z poniższej listy

<?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) {} 
} 
Powiązane problemy