Um in einer eigenen Extbase Extension den Title-Tag zu setzen oder zu ändern, gibt es den sogenannten Title-Tag-Provider bzw. die Title-Tag API. Im Gegensatz zu den Meta-Tags ist hier etwas mehr Arbeit vonnöten, aber dennoch sehr leicht und schnell umgesetzt. Ich gehe davon aus das Du bereits eine eigene Extension erstellt hast. Falls nicht, solltest du dies erstmal nachholen.

Die TYPO3 Title Tag API

Wir müssen an dieser Stelle erst die Schnittstelle für den Title Tag ansprechen. Als ersten Schritt legen wir im Verzeichnis "Classes/Controller" eine Datei an, die wir entsprechend unserem System anbinden. Wir nennen Sie einfach ganz simpel "PageTitle.php". Die Datei bzw. der Controller bekommt natürlich den Namespace unserer Extbase Extension und wir erweitern zeitgleich den Controller, der für die Generierung des Title-Tags zuständig ist, mit unserer eigenen Klasse.

<?php 

namespace Lanius\MyExtension\Controller;
   
 use TYPO3\CMS\Core\PageTitle\AbstractPageTitleProvider;
   
 class MyExtensionTitleProvider extends AbstractPageTitleProvider
 {
   public function setMyTitle($title)
   {
     $this->title = $title;
   }
 }

?>

In der Funktion/Methode dieser Klasse wird der Titel übergeben.

Als nächstes bearbeiten wir die Datei "ext_localconf.php" im Stammverzeichnis unserer Extension und fügen dort die Konfiguration unserer unserer Title-Tag API hinzu.

 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(trim('
   config.pageTitleProviders {
     own {
       provider = Lanius\MyExtension\Controller\MyExtensionTitleProvider
       before = record
       after = altPageTitle
     }
   }
 ')); 

Falls noch nicht geschehen ist, weisen wir unseren Controller an, aus dem TYPO3 Core die "GeneralUtility" - Klasse zu benutzen.

use TYPO3\CMS\Core\Utility\GeneralUtility;

Ich gehe davon aus das du in deinem Controller eine Action hast, die für die Darstellung einer Einzelansicht eines Datensatzes verantwortlich ist. In dieser Action könntest du nun beispielsweise den Title-Tag folgendermaßen setzen.

$titleProvider = GeneralUtility::makeInstance(MyExtensionTitleProvider::class);
$titleProvider->setTitle($row['title']);

Damit wird nun der vom TYPO3 Core generierte Title Tag überschrieben.

Neuer Kommentar

0 Kommentare