Я безуспешно пытался установить хук 'aftercommentinsertion'.
Наконец-то я решил это, изменив сам t3blog, так что вы можете указать uid страниц, которые необходимо очистить с помощью опечатки.
# my typoscript code
plugin.tx_t3blog_pi1.blogList {
# clear these pages when a visitor writes a new comment to a post
clearCacheForPIDsAfterCommentInsertion = 1,6,8,24
}
// the file: t3blog/pi1/widgets/blogList/class.singleFunctions.php
protected function insertNewComment(array $data) {
$data['pid'] = t3blog_div::getBlogPid();
$data['date'] = $data['crdate'] = $GLOBALS['EXEC_TIME'];
$GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_t3blog_com', $data);
$commendId = $GLOBALS['TYPO3_DB']->sql_insert_id();
$this->updateRefIndex('tx_t3blog_com', $commentId);
// Hook after comment insertion
if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['t3blog']['aftercommentinsertion'])) {
foreach($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['t3blog']['aftercommentinsertion'] as $userFunc) {
$params = array(
'data' => &$data,
'table' => 'tx_t3blog_com',
'postUid' => $data['fk_post'],
'commentUid' => $commendId,
);
t3lib_div::callUserFunction($userFunc, $params, $this);
}
}
// ******************* MY CLEAR CACHE CODE *******************
error_log("t3blog inserted new comment");
$pids = $this->conf['clearCacheForPIDsAfterCommentInsertion'];
$pidArray = is_string($pids) ? t3lib_div::trimExplode(',', $pids, 1) : NULL;
error_log("t3blog clearCacheForPIDsAfterCommentInsertion: ".$pids." -- ".print_r($pidArray, true));
if(is_array($pidArray)) {
$tce = t3lib_div::makeInstance('t3lib_TCEmain');
foreach($pidArray as $pid) {
error_log("t3blog clear_cacheCmd: ".$pid);
$tce->clear_cacheCmd((int)$pid);
}
}
}
Я отправил этот код на Дмитрий Дулепов (автор t3blog).