2012-11-23 24 views

Trả lời

18

Những Móc được đặt tại t3lib/class.t3lib_tcemain.php

Sau đây là một số những:

  • processDatamap_preProcessFieldArray
  • processDatamap_postProcessFieldArray
  • hook_processDatamap_afterDatabaseOperations
  • processDatamap_afterAllOperations

Trong trường hợp của bạn, tôi nghĩ bạn có thể sử dụng "processDatamap_postProcessFieldArray".

Ví dụ làm thế nào để đưa nó vào trong bạn 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'; 

Ví dụ lớp:

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

Với $ bảng, bạn có thể kiểm tra bảng được sửa đổi. $ status cho phép bạn truy xuất hành động hiện tại, ví dụ "mới", "cập nhật" hoặc "xóa".

Ví dụ cho Typo3> 6 với không gian tên trên móc khác:

$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

Cảm ơn! Đó là cách tôi cũng đã tìm thấy bây giờ sau giờ tìm kiếm và thử nghiệm. Một chút thay đổi, tôi sử dụng 'processCmdmapClass' Hook và' processCmdmap_deleteAction' i trường hợp xóa. – FlorianX

+1

[Đây là liên kết được cập nhật cho t3lib_tcemain.php (typo3 4.5)] (http://api.typo3.org/typo3cms/45/html/classt3lib___t_c_emain.html) – peter

+1

Cảm ơn bạn, tôi đã thêm nó vào bài đăng của tôi. – Shufla

0

Có phần mở rộng dmc_hooklist liệt kê tất cả các móc. (sử dụng một vài năm trước)

Hoặc có một cái nhìn vào t3lib/class.t3lib_tcemain.php có những móc bạn cần.

+0

tôi tự hỏi, tại sao câu trả lời của tôi đã không hữu ích? Giải thích có thể? – maholtz

+1

Xin chào, dmc_hooklist là câu trả lời "chuẩn" nhưng tiện ích mở rộng này không hoạt động trên hệ thống của tôi. Bạn đã đưa ra thông tin đầu tiên trên google nếu ai đó đang tìm kiếm trong chủ đề này. Tôi muốn tìm hiểu thêm chi tiết hoặc thực hành tốt nhất.cảm ơn anyway – FlorianX

4

Đối Typo3 7,6 phiên bản

Viết sau trong 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'; 

Tạo móc lớp /Classes/Hook/TCEmainHook.php, Chọn chức năng thích hợp từ danh sách dưới đây

<?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) {} 
} 
Các vấn đề liên quan