Title und Meta-Description in Extbase setzen

Gerade kürzlich stand ich vor dem Problem, dass ich in einem Extbase-Plugin, welches non-cacheable sein musste, den Title-Tag und die Meta-Description dynanisch aus der Extension setzen musste.
Der häufig genutzter Ansatz den Title und die Description im GLOBALS-Array zu überschreiben

$GLOBALS['TSFE']->page['title'] = $newTitle;
$GLOBALS['TSFE']->indexedDocTitle = $newTitle;
$GLOBALS['TSFE']->page['description'] = $newDescription;

was in dem Fall eines nicht-cachebaren Plugins leider nicht funktioniert. Daher habe ich dann einen eher einfachen aber effektiven Ansatz verfolgt. In den Projekt wird die seo_basics-Extension genutzt, also deaktivieren wir alle Head-Tags der seo_basics-Extensin im Typoscript-Template der entsprechenden Seite:

plugin.tx_seobasics >

Nun werden kein Title und keine Meta-Description mehr in den Head gerendert und wir können diese in unserer Extension „händisch“ mittels der addAddtionalHeaderData-Methode in unserem Controller neu setzen:

$title = '<title>' . $myNewTitle . '</title>';
$metaDescription = '<meta name="description" content="' .  $myNewMetaDescription . '">';
$this->response->addAdditionalHeaderData($title . PHP_EOL . $metaDescription);
Google+

Caches deaktivieren in der Entwicklung TYPO3

Um die Caches bei der Entwicklung von TYPO3-Extensions zu deaktivieren reicht ein einfaches

config.no_cache = 1

im Typoscript-Template zumeist nicht aus. Es empfiehlt sich zusätzlich noch das Caching für die inkludierten Typoscript-Templates in der User-TS-Config des eingeloggten Backend-Users zu deaktivieren:

admPanel.override.tsdebug.forceTemplateParsing = 1 

als auch die Cache-Backend des Caching-Framework auf das NullBackend zu setzen:

$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages'] = array(
    'frontend' => 't3lib_cache_frontend_VariableFrontend',
    'backend' => 't3lib_cache_backend_NullBackend',
    'options' => array(
        )
    );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pagesection'] = array(
    'frontend' => 't3lib_cache_frontend_VariableFrontend',
    'backend' => 't3lib_cache_backend_NullBackend',
    'options' => array(
        )
    );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash'] = array(
    'frontend' => 't3lib_cache_frontend_StringFrontend',
    'backend' => 't3lib_cache_backend_NullBackend',
    'options' => array(
        )
    );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_object'] = array(
    'frontend' => 't3lib_cache_frontend_VariableFrontend',
    'backend' => 't3lib_cache_backend_NullBackend',
    'options' => array(
        )
    );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_reflection'] = array(
    'frontend' => 't3lib_cache_frontend_VariableFrontend',
    'backend' => 't3lib_cache_backend_NullBackend',
    'options' => array(
        )
    );

Ergänzung:

Seit TYPO3 6.2 wird die Namespace-Notation verwendet:

$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\NullBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pagesection']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\NullBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\NullBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_object']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\NullBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_reflection']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\NullBackend';
Google+