Metatags

Metatags in TYPO3 Websites

Metatags waren dafür vorgesehen, in Webseiten Informationen für Suchmaschinen zu speichern. Früher haben viele Leute versucht durch das aufblähen der Metatags ihre Position in Suchmaschinen zu verbessen. Das hat dazu geführt das Suchmaschinen die Metatags kaum noch beachten.

 

Dennoch sollte man die Metatags nutzen um dort eine sinnvolle Beschreibung und sinnvolle Keywords zu hinterlegen. Optimierte Metatags können also zu einer besseren Positionierung beitragen.

 

In TYPO3 kann man für jede einzelne Seite Keywords und eine Beschreibung hinterlegen.  Diese werden dann bei korrektem Templatesetup in die Seite integriert.  Wie bei vielen Bereichen gibt es in TYPO3 mehrere Wege, die Metatags in die Webseite zu integrieren.

1.) Der erste Weg ist das zuweisen über "page.meta" im TypoScript Setup des Templates. Der Vorteil dieser Variante ist, das es relativ leicht umgesetzt werden kann.

 

2.) Der zweite Weg ist das Erzeugen der meta Tags "zufuss" über "page.headerData". Diese Möglichkeit ist zwar etwas komlizierter, kann sich aber dennoch lohnen. Durch diese Variante kann man z.B. die Metatags bei einer Extension wie cmw_linklist oder chc_forum füllen, die ja normal über "nur" eine Seite eingebunden sind, aber mehrere Unterseiten generieren.

 

3.) Für alles gibt es in TYPO3 Extensions, so auch für Metatags. Auf diese werde ich hier zunächst nicht eigenen sondern erstmal die "Bordmittel" erklären.


Als erstes werde ich die 1. und zugleich einfachste Variante erklären.

Zunächst erkläre ich erstmal wie man die Metatags ins Template bekommt. Danach erkläre ich, wie man die Felder für die Metatags im Backend pflegen kann.

 

TypoScript Setup für die Metatags

Damit die Felder, die im Backend gefüllt werden, auch im Frontend in die Metatags eingefügt werden muss dies mittels TypoScript im Setupcode des Templates festgelegt werden.

page.meta{
    keywords.field = keywords
    keywords.ifEmpty ( 
         typo3, backend
    )
    description.field = description
    description.ifEmpty ( 
         Eine Einführung in das TYPO3 Backend und Tutorials zum CMS TYPO3 
    )
    robots = INDEX,FOLLOW
}

Dieses Setup sorgt dafür, dass der Metatag "keywords" mit dem gefüllt wird, was im Backend an Keywords eingegeben wurde.

Sollte im TYPO3 Backend nichts festgelegt sein, werden die Standard Keywords "typo3, backend" benutzt. Bei dem Metatag "description" verhält es sich ähnlich, auch hier wird der Text aus dem Backend verwendet und wenn dieser leer ist, wird ebenfalls ein Standardtext verwendet.

Ausserdem wird der Metatag "robots" auf INDEX und FOLLOW gesetzt, damit Robots spidern (das tun sie zwar auch so aber ...)

Metatags im Backend eintragen

Vorraussetzung ist für diesen Artikel, dass du weisst wie man Seitenbehälter anlegt, bzw. unseren Artikel "Seiten erstellen" gelesen hast.

Im Tab "Metadata" sind die Felder im TYPO3 Backend zu finden in denen eine Description und Keywords eingegeben werden können.



In diesem Formular ist das Backendmodul zu sehen, dass dazu dient Metatags und Keywords einer Seite in TYPO3 zu pflegen.
Formularfelder für Metatags eines Typo3 Seitenbehälters

Nachdem das TypoScript Template zum eindinden der Metafelder aus dem Seitenheader eingebunden wurde und die Metatags im Backend gepflegt sind, sind die Metatags auf der Webseite sichtbar.

Die zweite Variante TYPO3 Metatags zufuss

In diesem Abschnitt möchte ich erklären wie man über page.headerData die Metatags generieren kann.

TYPO3 bietet über page.headerData die Möglichkeit weitere Daten in den Seitenheader einzufügen, dass kann z.b. JavaScript sein oder wie in unserem Fall Metatags etc. Um den Metatag "description" mit "hello world "zu füllen ist folgender TypoScript Code nötig:

#Object Array anlegen
temp.meta = COA

#COA füllen
temp.meta{
   # index 10 ist ein text       
   10 = TEXT
   # der wert ist hello world       
   10.value = hello world
}

# möglichst am Ende des Headers einfügen 
page.headerData.999 = COA
page.headerData.999 < temp.meta

# text in den meta tag wrappen 
page.headerData.999.wrap = <meta name="description" content="|"> 

Du denkst dir jetzt wahrscheinlich das diese Variante komplizierter ist und im Vergleich zur ersten Variante keinen Vorteil bietet.


Es gibt jedoch einen entscheidenden Vorteil. Durch diese Variante kann man z.B. auch CONTENT Elemente aus der Datenbank in die Metatags "wrappen".

Das kann sinnvoll sein, wenn man z.b. eine Erweiterung wie cmw_linklist oder chc_forum nutzt. Diese Erweiterungen werden auf einer Seite als Plugin eingebunden, es werden aber z.b. bei einem Forum durch verschiedene Threads dennoch verschiedene Contentseiten/Varianten generieren.

Beim Vorgehen nach Variante 1. (page.meta) hätten alle Forenunterseiten die gleichen Metatags. Durch dieses Vorgehen lassen sich jedoch diese Metatags dynamisch generieren. Hier ein Beispielcode für CMW Linklist:

temp.meta = COA_INT
temp.meta{
   10=CONTENT
   10.table= tx_cmwlinklist_category
   10.select {
      #ID des SysFolders in dem sich die Kategorie befindet
      pidInList=2
      where = 1=1
      andWhere.dataWrap = uid={GPvar:category_uid}
      max=1
    }
    10.renderObj =COA
    10.renderObj{
       20=TEXT
       20 {
          field= label
          noTrimWrap = || Links:|
       }
    }
 
    20=CONTENT
    20.table= tx_cmwlinklist_link
    20.select {
       #ID des SysFolders in dem sich die Links befindet
       pidInList=2
       where = 1=1
       andWhere.dataWrap = uid={GPvar:uid}
       max=1
    }
    20.renderObj =COA
    20.renderObj{
       20=TEXT
       20 {
          field= label
          noTrimWrap = | |  / |
       }
       30=TEXT
       30 {
          field = description
          crop=120
          noTrimWrap = | |  ... |
       }
   }
}
 
page.headerData.999 = COA
page.headerData.999 < temp.meta
page.headerData.999.wrap = <meta name="description" content="|">

Beim erzeugen der Metatags sollte man sich für eine Variante entscheiden.
Die zweite Variante ist komplizierter bietet jedoch mehr Flexibilität.

Durch die zweite Variante lassen sich aber auch die Felder (keyword und description) aus dem Backend nutzen.

Ausserdem kann die zweite Variante auch bei Extensions genutzt werden um den title Tag zu generieren.

#normale title generierung temporär abschalten
page.config.noPageTitle = 1
 
 #text in title tag wrappen 
page.headerData.10 = COA
page.headerData.10 < temp.meta
page.headerData.10.wrap = <title>| </title> 

Was anzumerken ist, ist das COA_INT genutzt wird damit der Cache nicht genutzt wird. Das ist z.b. bei einem Forum nötig für korrekte Ergebnisse. Der Nachteil dabei ist, dass die Performance verschlechtert wird. Man muss also abwägen welche Variante die beste ist.

Navigation