Für die Ausgabe von Meta-Tags im Quellcode einer TYPO3 Webseite gibt es verschiedene Möglichkeiten, die ich hier vorstellen möchte. Ein Meta-Tag wird von TYPO3 bereits automatisch gesetzt: <meta name=“generator“ content=“TYPO3 4.4 CMS“ />. Um die Ausgabe aller anderer Meta-Tags muss man sich selbst kümmern
Die – meiner Meinung nach – beste Lösung ist das Setzen der Meta-Tags über die TypoScript-Einstellung „page.meta“, da diese Lösung sehr flexibel ist und keine TYPO3 Erweiterung benötigt wird.
Per TypoScript „page.meta“
TYPO3 stellt die TypoScript-Einstellung „page.meta“ für die Meta-Tags zur Verfügung:
TS Setup
page.meta.description = Meine Beschreibung ... page.meta.keywords.data = levelfield :-1, keywords, slide page.meta.keywords.wrap = Keyword 1,Keyword 2,| |
Die Angaben laufen durch die stdWrap-Funktion, dadurch ist man sehr flexibel und kann z.B. die Felder „Stichworte“ und „Beschreibung“ aus den Seiteneigenschaften einlesen.
Komplette Konfiguration
Bei dieser Beispiel-Konfiguration vererben sich die Meta-Inhalte auf Unterseiten, sie werden aus verschiedenen Feldern automatisch ausgelesen bzw. sind über TypoScript Konstanten konfigurierbar. Ist eine TypoScript-Konstante nicht gesetzt, wird der Meta-Tag nicht ausgegeben. Wenn für eine Seite in den Seiteneigenschaften die Checkbox „Nicht suchen“ aktiviert ist, wird ein entsprechender Meta-Tag gesetzt, so dass Suchmaschinen diese Seite nicht indexieren.
TS Constants
temp.meta { robots = index,follow copyright = language = distribution = rating = revisit = 7 days } [globalVar = TSFE:page|no_search = 1] temp.meta.robots = noindex,follow [end] |
TS Setup
page.meta { description { data = page:description ifEmpty.data = levelfield :-1, description, slide } keywords { data = page:keywords ifEmpty.data = levelfield :-1, keywords, slide } title { data = page:title } author { data = levelfield :-1, author, slide } date { data = page:SYS_LASTCHANGED // page:crdate date = Y-m-d } robots = {$temp.meta.robots} copyright = {$temp.meta.copyright} distribution = {$temp.meta.distribution} rating = {$temp.meta.rating} revisit-after = {$temp.meta.revisit} } |
WICHTIG: Damit „slide“ (Vererbung der Felder auf Unterseiten) bei „description“, „keywords“ und „author“ funktioniert, muss man diese Felder im Install-Tool in „All Configuration“ in Feld „addRootLineFields“ eintragen.
Hinweis: Die Anweisung „data = page:myField“ bei „keywords“ und „description“ scheint unnötig zu sein, ermöglicht jedoch das Setzen der Meta-Info über PHP:
$GLOBALS['TSFE']->page['description'] = 'the new description' |
Wer hier den Meta-Tag für „content-language“ vermisst: Diese Anweisung ist veraltet, die Sprache sollte man im body- oder html-Tag setzen.
Weitere Möglichkeiten für Konfiguration
Felder aus Seiteneigenschaften plus globale Werte
Mit nur einer Zeile TypoScript kann man die Keywords, die ein Redakteur über die Seiteneigenschaften einpflegt, um weitere Keywords ergänzen:
TS Setup
page.meta.keywords.wrap = Keyword 1,Keyword 2,| |
Setup für tt_news Detailansicht
Auf der News-Detailseite kann man die Meta-Tags mit den Daten aus dem News-Datensatz überschreiben. Dazu legt man diesen TypoScript-Code in der News-Detailseite an:
TS Setup
// meta keywords and description from news record page.meta { description.override.data = register:newsSubheader keywords.override.data = register:newsKeywords } |
Hinweis: Der Meta-Tag „author“ sollte an dieser Stelle natürlich auch mit dem Autor der News überschrieben werden, allerdings geht dies erst, wenn tt_news diesen für die Anwendung in TypoScript per LOAD_REGISTER-Funktion zur Verfügung stellt.
Per PHP
Setzen der Meta-Tags mit PHP, z.B. über eine eigene Erweiterung:
$GLOBALS['TSFE']->page['keywords'] = '...'; $GLOBALS['TSFE']->page['description'] = '...'; |
Dies funktioniert aber nur, wenn die Meta-Tags nach bestimmten Regeln konfiguriert werden, z.B. page.meta.keywords.data = page.keywords
Per Extension
Es gibt natürlich auch diverse Erweiterungen für TYPO3, die sich um die Erzeugung der Meta-Tags kümmern:
Extension metatags
Generiert Meta-Tags über ein PHP-Skript.
Vorteile:
- Globale Keywords möglich, man kann diese mit den Feldern aus den Seiteneigenschaften kombinieren
- Dublin Core Meta Tags möglich
- Konfiguration über TypoScript möglich, dadurch kann man z.B. auch die Vererbung einstellen oder eigene Meta-Tags für die News-Detailseite
Nachteile:
- Unnötig, da gesamte Funktionalität über TypoScript erreicht werden kann
- Extension ist aus Jahr 2005 und wurde für TYPO3 Version 3.6 erstellt
- Extension ist nicht dokumentiert
Ähnliche Erweiterungen:
- pp_pagemetadata
- cl_metatags: Komplette Ext. ist in TypoScript, gibt zusätzlich Geo-Tags und Facebook Open Graph aus
- und weitere…
Extension autometa
Erzeugt Tags (keywords, description, author und date) automatisch aus vorliegendem Seiten-Inhalt, wenn diese nicht händisch für eine Seite angelegt wurden. Verwendet als Meta-Keywords die am häufigsten vorkommenden Wörter der Seite und als Meta-Description den ersten Textabschnitt. Bestimmte Keywords (stopwords) werden nicht verwendet.
Vorteile:
- Sinnvoll für Seiten, deren Texte bewusst Suchmaschinen-optimiert sind (also wichtige Stichwörter mehrfach erwähnen, besonderen Augenmerk auf Überschrift und ersten Textabschnitt)
- Auf jeder Seite individuelle Meta-Keywords und -Description ohne Pflegeaufwand durch den Redakteur…
Nachteile:
- …wobei die Pflege der Stopwords doch wieder einiges an Zeit fressen wird
- Extension ist nicht dokumentiert
Ähnliche Erweiterungen:
Es gibt viele ähnliche Erweiterungen, die technisch unterschiedlich vorgehen und verschiedene Features bieten.
- pmkautokeywords
- bk_automakemetatags
- mc_autokeywords
- autokeywords
- autokeywordz
- jh_opengraphprotocol (nur Open Graph Meta-Tags)
- hnkeywords: erweitert das Keyword-Eingabefeld, macht beim Tippen Vorschläge (Autocomplete) und zeigt an, wie oft das Keyword schon verwendet wird. Bietet außerdem BE-Modul mit Keyword-Übersicht über alle Seiten.
- und weitere…
Vielen Dank für die tolle Zusammenfassung. Du schreibst, dass
Der Meta-Tag “author” sollte an dieser Stelle natürlich auch mit dem Autor der News überschrieben werden, allerdings geht dies erst, wenn tt_news diesen für die Anwendung in TypoScript per LOAD_REGISTER-Funktion zur Verfügung stellt.
Und genau daran scheitere ich. Wie bekomme ich den den author per LOAD-REGISTER zur Verfügung gestellt?
Ich meinte damit, dass dies nicht geht, bis der Entwickler von tt_news das Feld „author“ per LOAD_REGISTER zur Verfügung stellt.
Oder aber du übergibst das Feld über den Hook „extraItemMarkerHook“ selbst an diese Funktion.
Ich hab’s wie folgt gelöst:
page.meta.author >
page.headerData.1 = TEXT
page.headerData.1 {
dataWrap = DB:tt_news:{GP:tx_ttnews|tt_news}:author
wrap3 = <meta name="author" content="{|}" />
insertData = 1
}
kleiner als / größer als wurde ersetzt…
page.meta.author>
page.headerData.1 = TEXT
page.headerData.1 {
dataWrap = DB:tt_news:{GP:tx_ttnews|tt_news}:author
wrap3 = „kleiner als“ meta name=“author“ content=“{|}“ „größer als“
insertData=1
}
Danke für den Beitrag, habe dein Code-Snippet bearbeitet, damit es richtig angezeigt wird.