在TYPO3中,我想从缓存表中删除一个具有一些GET值的页面。我还没有找到一个扩展,它会处理那个或TYPO3方法。
所以任何帮助都将受到赞赏。
我的TYPO3版本:4.5.x
答案 0 :(得分:0)
您可以创建一个清除指定页面缓存的函数,需要以下代码:
TYPO3 6.0
public function clearCache($cacheCmd) {
/** @var $tce \TYPO3\CMS\Core\DataHandling\DataHandler */
$tce = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance("TYPO3\\CMS\\Core\\DataHandling\\DataHandler");
$tce->stripslashes_values = 0;
$tce->start(array(), array());
switch($cacheCmd) {
case 'pages':
case 'all':
$tce->admin = 1;
}
$tce->clear_cacheCmd($cacheCmd);
unset($tce);
}
TYPO3 4.x
public function clearCache($cacheCmd) {
/** @var $tce t3lib_TCEmain */
$tce = t3lib_div::makeInstance("t3lib_TCEmain");
$tce->stripslashes_values = 0;
$tce->start(array(), array());
switch($cacheCmd) {
case 'pages':
case 'all':
$tce->admin = 1;
}
$tce->clear_cacheCmd($cacheCmd);
unset($tce);
}
$cacheCmd
可以包含以下值:
/typo3/sysext/core/Classes/DataHandling/DataHandler.php:clear_cacheCmd
(> 6.0)或/t3lib/class.t3lib_tcemain.php
(4.x)
/**
* Clears the cache based on the command $cacheCmd.
*
* $cacheCmd='pages': Clears cache for all pages. Requires admin-flag to
* be set for BE_USER.
*
* $cacheCmd='all': Clears all cache_tables. This is necessary if
* templates are updated. Requires admin-flag to be set for BE_USER.
*
* $cacheCmd=[integer]: Clears cache for the page pointed to by $cacheCmd
* (an integer).
*
* $cacheCmd='cacheTag:[string]': Flush page and pagesection cache by given tag
*
* $cacheCmd='cacheId:[string]': Removes cache identifier from page and page section cache
*
* Can call a list of post processing functions as defined in
* $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearCachePostProc']
* (numeric array with values being the function references, called by
* \TYPO3\CMS\Core\Utility\GeneralUtility::callUserFunction()).
*
* Note: The following cache_* are intentionally not cleared by
* $cacheCmd='all':
*
* - cache_md5params: RDCT redirects.
* - cache_imagesizes: Clearing this table would cause a lot of unneeded
* Imagemagick calls because the size informations have
* to be fetched again after clearing.
*
* @param string $cacheCmd The cache command, see above description
* @return void
*/
如果在typoscript中设置了给定参数或者创建了一个简单的扩展名,请使用userFunc调用此方法。
答案 1 :(得分:0)
就是这样:
您需要一个合适的TSFE对象$GLOBALS['TSFE']
那么你需要来自localconf $TYPO3_CONF_VARS['SYS']['encryptionKey']
的加密密钥
和URL参数,例如`tx_ttnews [tt_news]
然后是这些步骤
$arr = array(
'encryptionKey' => $TYPO3_CONF_VARS['SYS']['encryptionKey'],
'tx_ttnews[tt_news]' => $newsid,
// ...
)
ksort($array);
$GLOBALS['TSFE']->cHash_array = $array;
$chash = $GLOBALS['TSFE']->getHash();