Title und Meta-Description in Extbase setzen

Gerade kürzlich stand ich vor dem Problem, dass ich in einem Extbase-Plugin, welches non-cacheable sein musste, den Title-Tag und die Meta-Description dynanisch aus der Extension setzen musste.
Der häufig genutzter Ansatz den Title und die Description im GLOBALS-Array zu überschreiben

$GLOBALS['TSFE']->page['title'] = $newTitle;
$GLOBALS['TSFE']->indexedDocTitle = $newTitle;
$GLOBALS['TSFE']->page['description'] = $newDescription;

was in dem Fall eines nicht-cachebaren Plugins leider nicht funktioniert. Daher habe ich dann einen eher einfachen aber effektiven Ansatz verfolgt. In den Projekt wird die seo_basics-Extension genutzt, also deaktivieren wir alle Head-Tags der seo_basics-Extensin im Typoscript-Template der entsprechenden Seite:

plugin.tx_seobasics >

Nun werden kein Title und keine Meta-Description mehr in den Head gerendert und wir können diese in unserer Extension „händisch“ mittels der addAddtionalHeaderData-Methode in unserem Controller neu setzen:

$title = '<title>' . $myNewTitle . '</title>';
$metaDescription = '<meta name="description" content="' .  $myNewMetaDescription . '">';
$this->response->addAdditionalHeaderData($title . PHP_EOL . $metaDescription);
Google+

4 Gedanken zu „Title und Meta-Description in Extbase setzen“

  1. aus verschiedenen Gründen möchte ich mir meine Meta-Tags flexibel in typoscript zusammenbauen und dabei u.a. auch Parameter berücksichtigen die aus Extbase (eigene Extension) kommen.

    D.h. ich will z.B. den Titel des eines Objekts an typoscript übergeben und dort ausgeben. Ich bin zu folgender Lösung gekommen.

    1. Das ganze Objekt an typoscript übergeben
    {produkt -> f:cObject(typoscriptObjectPath: ‚lib.extMeta‘)}
    (oder nur einen Wert: {produkt.title -> f:cObject(typoscriptObjectPath: 'lib.extMeta.title')})

    2. Die einzelnen feld-werte in ein register schreiben:

    lib.extMeta = COA
    lib.extMeta.1 = LOAD_REGISTER
    lib.extMeta.1 {
    extMetaTitle.cObject = TEXT
    extMetaTitle.cObject.field = titel
    extMetaDescription.cObject = TEXT
    extMetaDescription.cObject.field = beschreibung
    extMetaKeywords.cObject = TEXT
    extMetaKeywords.cObject.field = keywords
    extMetaImg.cObject = TEXT
    extMetaImg.cObject.field = bilder
    }

    Nun kann z.B. der Titel direkt mit typoscript weiter manipuliert und ausgegeben werden:

    page.1001 = TEXT
    page.1001.value = {register:extMetaTitle}
    page.1001.wrap = {register:extMetaTitle}
    page.1001.insertData = 1

    page.headerData.1001 = TEXT
    page.headerData.1001.value = {register:extMetaTitle}
    page.headerData.1001.wrap = | {$pageTitleSuffix}
    page.headerData.1001.insertData = 1
    ...

    Stichworte: extbase typoscript meta daten, title, open graph image

  2. wenn ihr da schon angelangt seid:
    page.headerData.1001 = TEXT

    dann wäre:
    page.headerData.1001 = FLUIDTEMPLATE
    page.headerData.1001.file.dataWrap = ../template-{field:abc}-{register:whatever}.html
    page.headerData.1001.variables …
    page.headerData.1001.settings…

    die finale lösung, dann habt ihr alles:
    Header Data Template -> freie Wahl
    FluidViewhelper
    und natürlich TS via variables oder f:cObject

    😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.