Title Tag erstellen in Typoscript und mit Extbase
Veröffentlich am: von Andre Lanius
TYPO3 bietet dir eine Vielzahl von Möglichkeiten, den Title-Tag für deine Website zu generieren und anzupassen. Mit Typoscript, der konfigurationsbasierten Sprache von TYPO3, kannst du den Title-Tag flexibel steuern. Ein einfaches Beispiel wäre die Definition eines statischen Wertes oder die Verwendung dynamischer Inhalte, wie Seitentitel oder andere Metadaten. Dabei kannst du auch Bedingungen und Vererbungen nutzen, um den Title-Tag gezielt für bestimmte Seiten oder Bereiche deiner Website anzupassen.
Eine alternative Methode, die vor allem für komplexere Anforderungen geeignet ist, bietet dir die Extbase-Programmierung. Mit Extbase kannst du den Title-Tag direkt im Controller festlegen und so beispielsweise auf individuelle Inhalte oder benutzerdefinierte Logiken zugreifen. Dabei hast du die Möglichkeit, Daten aus Datenbanken oder Modulen dynamisch einzubinden, um personalisierte oder SEO-optimierte Title-Tags zu erstellen. Diese Vorgehensweise ist besonders hilfreich, wenn der Title-Tag aus mehreren variablen Bestandteilen zusammengesetzt werden soll.
Die Wahl zwischen Typoscript und Extbase hängt stark von den Anforderungen deines Projekts ab. Während Typoscript ideal für Standardanpassungen ist, ermöglicht dir Extbase eine präzisere Kontrolle und erweiterte Funktionalität. Beide Ansätze kannst du auch kombinieren, um das Beste aus beiden Welten zu nutzen. Unabhängig von der Methode ist es wichtig, den Title-Tag als zentrales Element der Suchmaschinenoptimierung und Nutzererfahrung zu betrachten und ihn strategisch zu gestalten.
Title Tag mit Typoscript generieren
Im folgenden geht es darum, den Title Tag einer Seite in TYPO3 mit Typoscript zu setzen oder zu erweitern. Wichtig ist u.a. auch, daß in diesem Fall mit noPageTitle der Tag zuerst deaktiviert wird, da man ansonsten einen doppelten Title-Tag in seinem Quellcode hat.
# Den Standard Seitentitel entfernen
config.noPageTitle = 1
page = PAGE
page {
# Neuen title Tag generieren
headerData {
10 = TEXT
10 {
field = title
noTrimWrap = |<title>Neuer Titel: | - statischer Text nach dem dynamischen</title>|
}
}
}
Mit Extbase den Title-Tag aus einem Controller setzen
Mit Extbase kannst du den Title-Tag in TYPO3 elegant über den Title-Tag-Provider setzen. Dieser Mechanismus erlaubt es dir, dynamische Inhalte direkt aus deinem Controller zu übergeben und somit den Title-Tag flexibel an die jeweiligen Anforderungen deiner Seite anzupassen. Beispielsweise kannst du Daten aus einem Repository abrufen, wie Produktnamen oder Kategorien, und diese gezielt in den Title-Tag einfügen. Der Title-Tag-Provider sorgt dabei dafür, dass dein dynamisch erzeugter Title-Tag korrekt in die Seiteninformationen eingebunden wird.
Der Vorteil des Title-Tag-Providers ist, dass er die verschiedenen Quellen und Prioritäten der Title-Tag-Generierung in TYPO3 berücksichtigt. Du kannst deinen individuellen Title-Tag in den Provider einspeisen, der diesen dann verarbeitet und passend zu den anderen Elementen deiner Seite einfügt. So kannst du sicherstellen, dass dein Title-Tag nicht nur technisch sauber integriert wird, sondern auch perfekt auf die Inhalte und die Zielgruppe deiner Website abgestimmt ist.
Im folgenden Beispiel gehen wir davon aus das du eine Extension hast wo es eine Listen- und eine Detailansicht der Datensätze gibt. Du möchtest wahrscheinlich, daß bei den Detailseiten beispielsweise der Titel des Datensatzes für den Title Tag genutzt wird. Das machst du wie folgt.
Als erstes muss du die eine Datei unterhalb von Classes anlegen. Am besten um die Übersicht zu bewahren erstellst du dir erstmal folgenden Ordner: Classes/PageTitle
In diesem erstellten Ordner erstellst du folgende Datei: TitleProvider.php
Der Inhalt dieser Datei sollte ungefähr wie folgt aussehen.
<?php
declare(strict_types=1);
namespace Vendor\Yourext\PageTitle;
use TYPO3\CMS\Core\PageTitle\AbstractPageTitleProvider;
final class TitleProvider extends AbstractPageTitleProvider
{
public function setTitle(string $title): void
{
$this->title = $title;
}
}
Du muss natürlich Vendor/Yourext an dem Namespace deiner Extension anpassen.
In deinem Controller kannst du den Title Provider jetzt ganz einfach einbinden, wie das folgende Beispiel es dir zeigt.
<?php
namespace Vendor\Yourext\Controller;
use Vendor\Yourext\PageTitle\TitleProvider;
use TYPO3\CMS\Core\Utility\GeneralUtility;
public function showAction(): ResponseInterface
{
$title = "Titel der angezeigt werden soll, z.B. aus einer Datenbankabfrage".
$titleProvider = GeneralUtility::makeInstance(TitleProvider::class);
$titleProvider->setTitle($title);
return $this->htmlResponse();
}
Als nächstes muss du in deinem Typoscript Setup nur noch deinen eigenen Title Tag Provider anmelden, damit innerhalb deiner Extension dieser auch benutzt wird.
config.pageTitleProviders {
your_ext_key {
provider = Vendor\Yourext\PageTitle\TitleProvider
before = altPageTitle,record,seo
}
}
Das wäre auch schon alles was getan werden muss, um den Title Tag in einer TYPO3 Extension dynamisch zu setzen. Der Vorteil hierbei ist, daß diese Methode sich in die SEO Extension von TYPO3 einhakt und der Title-Tag sauber generiert wird. Somit sparst du dir auch den Standard-Title erst mit Typoscript zu deaktivieren.
Kommentar schreiben
Anzahl der Kommentare: 0