Der Title-Tag und auch die Meta-Description sind für die Suchmaschinen enorm wichtig. Für die normalen Standard-Seiten im TYPO3-Baum ist es kein Problem und man kann bequem über die Seiteneigenschaften die Meta-Description und den Title-Tag pflegen. Bei selbst programmierten Extensions geht dies leider nicht automatisch und man muss Hand anlegen. Dafür gibt es mittlerweile in TYPO3 den Titletag-Provider und die Meta-Tag-API. Wie man es in seiner eigenen Extension nutzt, zeige ich in diesem Artikel.

Meta Tag API

Um Meta-Tags wie z.B. die Description aus der eigenen TYPO3 Extension zu füllen, müssen wir zuerst in unserem Controller gehen und die beiden Namespaces einbinden, die wir in diesem Fall benötigen.

use TYPO3\CMS\Core\MetaTag\MetaTagManagerRegistry;
use TYPO3\CMS\Core\Utility\GeneralUtility;

Nun gehen wir in die jeweilige Action, wo die Datensätze aus der Datenbank ausgelesen und bereitgestellt werden. Wenn z.B. die Meta-Description gesetzt werden soll, dann fügen wir folgendes in die Action ein.

$metaTagManager = GeneralUtility::makeInstance(MetaTagManagerRegistry::class)->getManagerForProperty('description');

Falls die Meta-Description bereits schon gefüllt wird, kann es manchmal vorkommen, daß sie nicht automatisch ersetzt wird. In diesem Fall müssen wir in unserer Action die Standard-Description mit folgenden Aufruf entfernen.

$metaTagManager->removeProperty('description');

Um jetzt die Meta-Description zu füllen, reicht nur noch ein einziger Aufruf, der wie folgt lautet.

$metaTagManager->addProperty('description', $descriptionFromData);

An der Stelle der Variable $descriptionFromData fügt man einfach die Variable oder den Datenbankaufruf ein, welches als Meta-Description verwenden werden soll. Auf der gleichen Art und Weise kann man auch Opengraph und andere Metas durch seine Extension füllen lassen. Hier ein Beispiel:

$metaTagManager = GeneralUtility::makeInstance(MetaTagManagerRegistry::class)->getManagerForProperty('og:title');

$metaTagManager->addProperty('og:title', 'Hier der Titel');

Title-Tag API

Um den Title-Tag aus der eigenen TYPO3 Extension zu setzen, ist derzeit noch etwas mehr Arbeit nötig. In dem Verzeichnis "Classes/Controller" legt man zuerst eine neue PHP-Datei an, z.B. TitleTag.php und fügen ihr den Namespace der eigenen Extension zu. Desweiteren erstellen wir in dieser Datei eine eigene Klasse die die Klasse des Title-Tag Providers erweitert.

 namespace Vendor\Extension\Controller;
   
 use TYPO3\CMS\Core\PageTitle\AbstractPageTitleProvider;
   
 class TitleProvider extends AbstractPageTitleProvider
 {
   public function setTitle($title)
   {
     $this->title = $title;
   }
 }

In der o.g. Funktion wird der Titel für den Title-Tag übergeben.

Im nächsten Schritt muss die Konfiguration für unseren Title-Tag-Provider in der Datei "ext_localconf.php" im Hauptverzeichnis der Extension vorgenommen werden.

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(trim('
   config.pageTitleProviders {
     titletag {
       provider = Vendor\Extension\Controller\TitleProvider
       before = record
       after = altPageTitle
     }
   }
 '));

Nun kann man innerhalb der Action in seinem Controller den Title-Tag beispielsweise mit folgenden Code befüllen.

$titleTag = GeneralUtility::makeInstance(TitleProvider::class);
$titleTag->setBlogTitle('Hier der Titel für die Detailansicht');

Der Standard Title-Tag vom TYPO3 Core wird nun automatisch überschrieben.

Mit diesen Möglichkeiten ist es heutzutage viel einfacherer die Metas und den Title-Tag aus eigenen Extensions zu füllen.

Referenzseiten zu den beiden Schnittstellen:

Comments are disabled for this post.

0 Kommentare