TYPO3 Extbase SEO Meta Tags in Fluid

| | Allgemein, CMS, Web

SEO Optimierung von Extbase Extensions mittels ViewHelper im Fluid Template in TYPO3 – eigentlich ganz einfach.

Oft reicht es nicht, einfach nur die URLs mittels RealURL hübsch und sprechend zu machen und eine 404 Page not found Seite anzulegen. Der nächste Schritt ist also die Optimierung der Meta Keywords, Description und dem Title Tag. In Pibase Extensions konnte man direkt im Code mittels

 $GLOBALS['TSFE']->additionalHeaderData[]

die Meta Daten einstellen, da Extbase allerdings die View vom Controller trennen möchte, sollte man die Meta Daten auch im Fluid einstellen können.

Mit ViewHelpern sind Fluid Templates mindestens genau so mächtig wie die Marker Varianten mit PiBase. Einen SEO ViewHelper zu erstellen, ist auch in wenigen Minuten erledigt. Dadurch lässt sich direkt im Fluid Template einstellen, welche Meta Tags man ausgeben möchte, das könnten Meta Keys, Meta Description oder der Title sein, aber auch Facebook Tags oder bzw. OpenGraph Tags sein.

Zunächst muss die Struktur entsprechend angelegt werden. (Zusätzlich zur normalen Extension Struktur mit ext_emconf.php etc.)

Classes -> ViewHelpers -> FluidseoViewHelper.php

Die eigentliche „Magie“ passiert ausschließlich in der Datei FluidseoViewHelper.php.

PHP Datei: FluidseoViewHelper.php
<?php
namespace TYPO3\Fluidseo\ViewHelpers;
/***************************************************************
 * Copyright notice
 *
 * (c) 2016 Marc Horst <info@marc-horst.de>
 * All rights reserved
 *
 * This script is part of the TYPO3 project. The TYPO3 project is
 * free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * The GNU General Public License can be found at
 * http://www.gnu.org/copyleft/gpl.html.
 *
 * This script is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * This copyright notice MUST APPEAR in all copies of the script!
 * Example
 * {namespace m=TYPO3\Fluidseo\ViewHelpers}
 *
 * @package TYPO3
 * @subpackage Fluidseo
 * @version
 */
class FluidseoViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {
 /**
 * Simple Fluid SEO Viewhelper
 * @param string $tag
 */
 public function render($tag) {
 switch ($tag) {
 case 'title':
 $GLOBALS['TSFE']->page['title'] = trim($this->renderChildren());
 break;
 case 'og:title':
 $GLOBALS['TSFE']->additionalHeaderData[] = '<meta property="og:title" content="'.htmlspecialchars(trim($this->renderChildren())).'"/>';
 break;
 case 'og:type':
 $GLOBALS['TSFE']->additionalHeaderData[] = '<meta property="og:type" content="'.htmlspecialchars(trim($this->renderChildren())).'"/>';
 break;
 case 'og:url':
 $GLOBALS['TSFE']->additionalHeaderData[] = '<meta property="og:url" content="'.htmlspecialchars(trim($this->renderChildren())).'"/>';
 break;
 case 'og:image':
 $GLOBALS['TSFE']->additionalHeaderData[] = '<meta property="og:image" content="'.htmlspecialchars(trim($this->renderChildren())).'"/>';
 break;
 case 'og:description':
 $GLOBALS['TSFE']->additionalHeaderData[] = '<meta property="og:description" content="'.htmlspecialchars(trim($this->renderChildren())).'"/>';
 break;
 case 'fb:app_id':
 $GLOBALS['TSFE']->additionalHeaderData[] = '<meta property="fb:app_id" content="'.htmlspecialchars(trim($this->renderChildren())).'"/>';
 break;
 case 'og:site_name':
 $GLOBALS['TSFE']->additionalHeaderData[] = '<meta property="og:site_name" content="'.htmlspecialchars(trim($this->renderChildren())).'"/>';
 break;
 default:
 $GLOBALS['TSFE']->additionalHeaderData[] = '<meta name="'.$tag.'" content="'.htmlspecialchars(trim($this->renderChildren())).'"/>';
 break;
 } 
 }
 
}
?>

Zusätzlich zu den normalen Tags description, title etc. habe ich noch die typischen Facebook und OpenGraph Tags hinzugefügt.

Wenn die Extension installiert ist und der Cache geleert ist, wird der ViewHelper muss der ViewHelper nur noch eingebunden werden

{namespace m=TYPO3\Fluidseo\ViewHelpers}

Und kann dann folgendermaßen genutzt werden

Der Inhalt des Tags wird nur im Header ausgegeben.
<m:fluidseo tag="description or other">
Tagcontent
</m:fluidseo>

Neueste Beiträge

Warum der Air Assist unverzichtbar ist – Mein Erfahrungsbericht

Nachdem ich meinen ATOMSTACK A12 Ultra Laser[*] und die R2 V2 Drehwalze[*] in Betrieb genommen hatte, war es nur eine Frage der Zeit, bis ich mir zusätzlich ein Air Assist System zugelegt habe. Ich entschied mich für das DEWALLIE Air Assist Set[*], und ich kann schon vorweg sagen: Es war eine der besten Ergänzungen für meine Lasergravur-Setups, vor allem beim Arbeiten mit Holz!


Weiter >>

Mein neues Setup: Der ATOMSTACK R2 V2 Drehwalze und A12 Ultra/Pro Laser – Perfekt für Gravuren auf runden Objekten!

Als ich mir kürzlich den ATOMSTACK A12 Ultra Laser[*] zugelegt habe, war mir schnell klar, dass ich das volle Potenzial dieses leistungsstarken Gravierers ausschöpfen wollte. Also habe ich nicht lange gezögert und gleich die ATOMSTACK R2 V2 Drehwalze[*] dazu gekauft, die es ermöglicht, zylindrische Objekte wie Trinkflaschen, Gläser oder Stifte zu gravieren.


Weiter >>

ATOMSTACK 12 Ultra / PRO

Ich habe mir kürzlich den Atomstack A12 Ultra Laser[*] gegönnt, und ich muss sagen, ich bin wirklich beeindruckt! Mit seiner 12W Hochleistung und der fortschrittlichen Laserstrahl-Kompressionstechnologie schneidet er mühelos durch verschiedene Materialien, und die Präzision ist einfach erstklassig. Der Aufbau ging dank des stabilen Aluminiumrahmens und der gut durchdachten Plug-and-Play-Struktur super schnell.


Weiter >>

Die perfekte Hülle für dein iPhone 15: Die TORRAS Dr. Ultra Dünn Hülle

Wenn du auf der Suche nach einer Hülle bist, die dein iPhone 15 (oder auch alle anderen Modele wie 14 oder 16[*]) perfekt schützt und dabei trotzdem unglaublich dünn und stilvoll ist, dann solltest du dir die TORRAS Dr. Ultra Dünn Hülle[*] unbedingt ansehen. Als stolzer Besitzer eines neuen iPhones habe ich mich erneut für diese Hülle entschieden – und das aus gutem Grund, denn ich habe sie bereits für mein altes iPhone 12 genutzt und war damals schon begeistert.


Weiter >>