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

Your MSPA Goes Smart – Step-by-Step to a DIY Smart Home Hot Tub (Wi-Fi Upgrade)

Introduction

In this article, I’ll show you how I successfully reverse-engineered the serial communication protocol of an MSPA Muse Carlton hot tub. The goal was to read remote control commands and send custom ones. I used an ESP32 Dev Board[*] for this. This protocol likely works with other MSPA models as well.

This article is for makers, home automation enthusiasts, and tech fans who enjoy diving deep into technical systems.


Weiter >>

Dein MSPA wird smart – Schritt-für-Schritt zum DIY Smart Home Whirlpool (WIFI/WLAN Upgrade) / Reverse Engineering eines proprietären UART-Protokolls am Beispiel eines Whirlpool-Steuergeräts (MSPA Muse Carlton)

Einleitung

In diesem Artikel zeige ich dir, wie ich das serielle Kommunikationsprotokoll eines MSPA Muse Carlton Whirlpools erfolgreich reverse-engineered habe. Ziel war es, die Fernbedienungsbefehle auszulesen und eigene Kommandos zu senden. Dafür kam ein ESP32 Dev Board[*] zum Einsatz. Dieses Protokoll funktioniert vermutlich auch bei anderen MSPA-Modellen.

Dieser Artikel richtet sich an alle Maker, Home-Automatisierer und Technik-Fans, die gern tief in die Technik eintauchen.


Weiter >>

Der perfekte Einstieg in die Welt der Vinyls: Der Denon DP-300F und 2 Alternativen

Warum Vinyl?

Vinyl erlebt seit einigen Jahren ein riesiges Comeback. Der warme, analoge Klang, das bewusste Musikhören und das Sammeln von Schallplatten faszinieren immer mehr Musikliebhaber. Dabei ist nicht nur das nostalgische Feeling ausschlaggebend, sondern vor allem auch der unverwechselbare Klangcharakter von Vinyl – ein Klang, der trotz moderner digitaler Verfahren nach wie vor viele Fans begeistert.

Denon DP-300F[*] – Der ideale Allrounder für Einsteiger

Der Denon DP-300F[*] ist nach wie vor ein beliebter vollautomatischer Plattenspieler im Einsteigerbereich. Sein automatischer Tonarm sorgt für einen schonenden Umgang mit Nadel und Platte – perfekt, wenn du ohne großen Aufwand direkt in den Vinylgenuss starten möchtest.


Weiter >>

Ein Leitfaden für Senioren: Günstige Smartphones bis 100 Euro – Unsere 4 Favoriten & Erfahrungsbericht einer maßgeschneiderten Senioren-Lösung – UPDATE 2024/25

In diesem Beitrag stellen wir dir vier günstige Smartphones vor, die aktuell (Stand Dezember 2024) für unter 100 Euro erhältlich sind. Zusätzlich teilen wir eine ganz besondere Geschichte aus dem Familienkreis: Wie wir eines dieser Geräte für die Oma meiner Verlobten eingerichtet haben, damit sie trotz ihrer Parkinson-Erkrankung gut damit zurechtkommt.


Weiter >>