如何使用缓存在 TYPO3 中生成评级元标记?
How to generate a rating meta tag in TYPO3 with caching?
我想为我的 TYPO3 页面中的评级生成一个丰富的代码段。评级信息是通过 API 获取的,因此我需要某种缓存机制。
我有一些关于 TYPO3 扩展的基本知识和经验,但我不确定最干净的解决方案。我可以使用 TYPO3 元标记呈现元标记 API 并使用 TYPO3 缓存框架缓存获取的信息。
但我不确定将逻辑存储在哪里以便在每次访问页面时执行。出于显而易见的原因,我不想使用内容插件。我应该设置一个 Controller 并使用例如调用 Contoller 的函数吗?一些钩子?
感谢您的帮助!
您可以查看 TypoScriptFrontendController
class 中的 tslib/class.tslib_fe.php
挂钩。
选择正确的(可能是tslib_fe-PostProc
)然后做这样的事情:
1) 在ext_localconf.php
中注册钩子
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['tslib_fe-PostProc'][] = \Vendor\Name\Hook\AdditionalMetaData::class . '->addRating';
2) 使用以下方法创建您的 class
<?php
namespace Vendor\Name\Hook;
class AdditionalMetaData
{
/**
* @param array $parameters
* @return void
*/
public function addRating(&$parameters)
{
/** @var TypoScriptFrontendController $tsfe */
$tsfe = &$parameters['pObj'];
// Do your logic here...
}
}
我想为我的 TYPO3 页面中的评级生成一个丰富的代码段。评级信息是通过 API 获取的,因此我需要某种缓存机制。
我有一些关于 TYPO3 扩展的基本知识和经验,但我不确定最干净的解决方案。我可以使用 TYPO3 元标记呈现元标记 API 并使用 TYPO3 缓存框架缓存获取的信息。
但我不确定将逻辑存储在哪里以便在每次访问页面时执行。出于显而易见的原因,我不想使用内容插件。我应该设置一个 Controller 并使用例如调用 Contoller 的函数吗?一些钩子?
感谢您的帮助!
您可以查看 TypoScriptFrontendController
class 中的 tslib/class.tslib_fe.php
挂钩。
选择正确的(可能是tslib_fe-PostProc
)然后做这样的事情:
1) 在ext_localconf.php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['tslib_fe-PostProc'][] = \Vendor\Name\Hook\AdditionalMetaData::class . '->addRating';
2) 使用以下方法创建您的 class
<?php
namespace Vendor\Name\Hook;
class AdditionalMetaData
{
/**
* @param array $parameters
* @return void
*/
public function addRating(&$parameters)
{
/** @var TypoScriptFrontendController $tsfe */
$tsfe = &$parameters['pObj'];
// Do your logic here...
}
}