Search code examples
typo3typo3-extensions

How to generate a rating meta tag in TYPO3 with caching?


I would like to generate a rich snippet for ratings in my TYPO3 pages. The rating information are fetched via an API, so I need some kind of caching mechanism.

I have some basic knowledge and experience with TYPO3 extensions, but I am not sure about the cleanest solution. I could render the meta tags with the TYPO3 Meta Tag API and cache the fetched information using the TYPO3 Caching Framework.

But I am not sure where to store the logic so that it gets executed at every page visit. I do not want to use a content plugin for obvious reasons. Should I set up a Controller and call the Contoller's function with e.g. some hook?

Thanks for any help!


Solution

  • You may have a look at the tslib/class.tslib_fe.php hooks in TypoScriptFrontendController class.

    Choose the correct one (maybe tslib_fe-PostProc) and do something like this :

    1) Register hook in ext_localconf.php

    $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['tslib_fe-PostProc'][] = \Vendor\Name\Hook\AdditionalMetaData::class . '->addRating';
    

    2) Create your class with the following method

    <?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...
        }
    }