如何解决t3blog-用户写评论时如何清除缓存?
| 用户写评论时,它不会立即可见。如果我手动清除缓存,它将变为可见。 通常,t3blog将帖子和评论存储在t3blog页面本身中,然后人们应该能够以这种方式清除缓存。TCEMAIN.clearCacheCmd = all
但是,在我的t3blog设置中,帖子和评论位于单独的sysfolder中。这是设置错误
plugin.tx_t3blog_pi1.blogPid = 21
当用户提交新评论时,有什么方法可以触发清除缓存吗?
解决方法
我尝试安装\'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);
}
}
}
我已将此代码发送给Dmitry Dulepov(t3blog的作者)。
,您可以在保存博客文章的sysfolder(uid = 21)的PAGE TS中添加以下行:
TCEMAIN.clearCacheCmd = 1,24
该行将表明新博客帖子将触发该确切页面列表的清晰缓存。我认为您的用户将需要权限来清除缓存...
它进入您的系统文件夹的PAGE TS而不是插入博客的一个或所有页面的原因是……(可能)所有页面都已缓存。您的sysfolder不会被缓存,并且TYPO3会注意到新记录,并为由逗号分隔的字符串定义的缓存页面提供明显的缓存。
,您是否尝试在存储注释的sysfolder的TSconfig页面中包括clearCacheCmd?您可以使用\“ all \”,\“ pages \”或相关的页面uid,请参见:http://typo3.org/documentation/document-library/core-documentation/doc_core_tsconfig/4.3.2/view/1/ 5 /#id2505694
如果\“ user \”是具有相关特权的后端用户,这应该可以工作-但我想,当您说\“一个用户发表评论\”时,它就是您正在谈论的前端用户,然后可能不会有太大帮助。
然后,解决方案是让扩展名在收到注释后清除缓存。您可能无法做到这一点,但是对此的快速解决方案是将页面标记为不可缓存(\“禁用缓存\”,“行为”选项卡)。但是要当心,这将导致服务器受损。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。