Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | extension_meta_tags [2023.12.12 16:02] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Title und META Tags in Extension füllen ====== | ||
+ | |||
+ | Für eine gute Suchmaschinenoptimierung der Webseite, auch kurz SEO genannt, ist es förderlich, | ||
+ | In Fall einer Extension in TYPO3 bedeutet dies, wenn man sie selbst programmiert, | ||
+ | |||
+ | In diesem Beitrag beschreiben wir, wie man aus dem Blog der Agentur Daten zieht, mit denen man die entsprechenden Tags füllen kann. Hier muss man zwei Schnittstellen des TYPO3 Code ansprechen: | ||
+ | * Die MetaTag API | ||
+ | * Die PageTitle API | ||
+ | Die erstere schreibt mehrere Tags wie Page Description oder das Facebook OpenGraph Protocol, die zweite füllt aus mehreren möglichen Quellen den < | ||
+ | Beginnen wir mit der MetaTag API, denn diese ist einfacher zu bearbeiten. | ||
+ | |||
+ | ===== MetaTag API ===== | ||
+ | |||
+ | |||
+ | Nehmen wir also an, wir wollen unsere Extension so erweitern, dass sie die Schnittstellen von TYPO3 nutzen soll. Nehmen wir ebenso an, dass es sich hier als Beispiel um einen Blog handelt, bei dem wir bereits über nutzbare Daten verfügen. Wir haben bereits einen Titel für den Blog und eine Kurzfassung. Beide sind mit ihrer Länge und ihrem Inhalt hervorragend geeignet, um als Quellen für unsere Schnittstelle zu dienen. | ||
+ | |||
+ | Um die Schnittstelle ansprechen zu können, geben wir in den Controller unserer Extension. Hier fügen wir oben die beiden Namespace des TYPO3 Core ein, die wir für unser Anliegen nutzen möchten: | ||
+ | |||
+ | use TYPO3\CMS\Core\MetaTag\MetaTagManagerRegistry; | ||
+ | use TYPO3\CMS\Core\Utility\GeneralUtility; | ||
+ | |||
+ | In unserem Controller suchen wir uns nun die Action, aus der heraus wir die einzelnen Beiträge des Blog ausgeben. Hier müssen wir das Datenmodell unserer Extension durchsuchen, | ||
+ | |||
+ | Im ersten Schritt initialisieren wir den metaTagManager und rufen das gewünschte Objekt der META-Tags auf, dass wir bearbeiten wollen, in diesem Fall die Meta Decsription: | ||
+ | |||
+ | $metaTagManager = GeneralUtility:: | ||
+ | |||
+ | Vielleicht wird diese Angabe bereits von unserem System gefüllt. In diesem Fall ist es notwendig, dass wir den standardmäßig gefüllten Tag entfernen: | ||
+ | |||
+ | $metaTagManager-> | ||
+ | |||
+ | Nun können wir den Tag mit einer entsprechenden Methode aus unserem Modell füllen: | ||
+ | |||
+ | $metaTagManager-> | ||
+ | |||
+ | Um eine Angabe wie OpenGraph für Facebook zu füllen, können wir ebenfalls MetaTag API nutzen. Auch in diesem Fall rufen wir den gewünschten Tag auf, hier den OpenGraph Titel: | ||
+ | |||
+ | $metaTagManager = GeneralUtility:: | ||
+ | |||
+ | Oft ist auch dieser durch unsere Arbeit an der Webseite zur SEO schon gefüllt. Wir entfernen ihn also zunächst: | ||
+ | |||
+ | $metaTagManager-> | ||
+ | |||
+ | Im nächsten Schritt füllen wir den OpenGrapg Titel für Facebook dann durch die entsprechende Methode aus unserer Extension: | ||
+ | |||
+ | $metaTagManager-> | ||
+ | |||
+ | |||
+ | ===== PageTitle API ===== | ||
+ | |||
+ | |||
+ | |||
+ | Um die zweite Schnittstelle für den < | ||
+ | |||
+ | namespace Ibk\Ibkblog\Controller; | ||
+ | | ||
+ | use TYPO3\CMS\Core\PageTitle\AbstractPageTitleProvider; | ||
+ | | ||
+ | class IbkblogTitleProvider extends AbstractPageTitleProvider | ||
+ | { | ||
+ | public function setBlogTitle($title) | ||
+ | { | ||
+ | $this-> | ||
+ | } | ||
+ | } | ||
+ | |||
+ | Wir legen in dieser Klasse eine Funktion an, der wir den gewünschten Titel übergeben. | ||
+ | |||
+ | Im nächsten Schritt ergänzen wir unsere Datei ext_localconf.php im Stammverzeichnis unserer Extension und fügen ihr die Konfiguration unsere Titel Providers hinzu: | ||
+ | |||
+ | \TYPO3\CMS\Core\Utility\ExtensionManagementUtility:: | ||
+ | config.pageTitleProviders { | ||
+ | own { | ||
+ | provider = Ibk\Ibkblog\Controller\IbkblogTitleProvider | ||
+ | before = record | ||
+ | after = altPageTitle | ||
+ | } | ||
+ | } | ||
+ | ' | ||
+ | |||
+ | Nun können wir uns an unseren Controller begeben. Diesen weisen wir an, Gebrauch von der GeneralUtility Klasse des TYPO3 Core zu machen, falls dies nicht schon geschehen ist: | ||
+ | |||
+ | use TYPO3\CMS\Core\Utility\GeneralUtility; | ||
+ | |||
+ | In der Action, die uns die Einzelansicht eines Blog Postings schreibt, können wir nun an die Generierung unserer Daten gehen. In dieser Methode können wir auf das betreffende Blog Objekt zugreifen und uns dessen Daten über die entsprechende Get-Methode holen: | ||
+ | |||
+ | $blog-> | ||
+ | |||
+ | Um nun den Titel der Seite mit unseren Daten zu füllen, müssen wir zuerst eine entsprechende Variablen einrichten. Im nächsten Schritt kann dann der Titel zugewiesen werden: | ||
+ | |||
+ | $titleProvider = GeneralUtility:: | ||
+ | $titleProvider-> | ||
+ | |||
+ | Damit überschreibt unser Titel nun den Standard des TYPO3 Core. | ||
+ | ===== Links zur TYPO3 Dokumentation ===== | ||
+ | |||
+ | |||
+ | TYPO3 bietet zwei Referenzen für die META-Tags an: | ||
+ | |||
+ | https:// | ||
+ | |||
+ | https:// |