2013-04-10 6 views
1

В TYPO3 Я хочу удалить одну страницу из таблицы кеша с некоторыми значениями GET. Я не нашел расширение, которое будет обрабатывать этот метод или метод TYPO3.TYPO3: вычислить значение хэша идентификатора кеша?

  1. Есть ли функция, которую я могу передать URL-адрес или аналогичный, который создает идентификатор кэша или удаляет конкретные данные из таблиц кеширования?
  2. Если нет, знает ли кто-нибудь, что такое алгоритм, который вычисляет хэш-идентификатор или в каком файле я могу его найти?

Так что любая помощь будет оценена по достоинству.

Моя версия TYPO3: 4.5.x

ответ

0

Это как это:

Вам нужен надлежащий объект TSFE $GLOBALS['TSFE']
тогда вам нужен ключ шифрования от localconf $TYPO3_CONF_VARS['SYS']['encryptionKey'] и параметров URL например `Tx_ttnews [tt_news]

затем эти шаги

  1. создать (отсортированный) массив с ключом шифрования и параметры URL
  2. сдай этого массива в собственность cHash_array объекта TSFE
  3. Получить значение cHash от метода getHash в TSFE в

$arr = array(
    'encryptionKey' => $TYPO3_CONF_VARS['SYS']['encryptionKey'], 
    'tx_ttnews[tt_news]' => $newsid, 
    // ... 
) 
ksort($array); 
$GLOBALS['TSFE']->cHash_array = $array; 
$chash = $GLOBALS['TSFE']->getHash(); 
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); 
} 

Иможет иметь следующие значения: /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 
*/ 

Зов это с UserFunc, если данный параметр установлен в TypoScript или создать простое расширение по своему усмотрению.

+0

О, извините. Я не дал свою версию TYPO3. Мне нужен Typo3 4.5.x код – HerrSerker

+0

Я добавил код v4 – Merec

+0

Thx. Но это не отвечает на мой вопрос. Мне нужен способ вычисления cacheId. – HerrSerker