TYPO3 Extension Programmierung mit Fluid und Extbase

Programmierung, Einbindung und Anpassung von Extensions

Extensions sind ein Werkzeug, um den Umfang von Funktionen in TYPO3 zu erweitern. Durch die Einbindung fremder Extensions oder die Erstellung einer eigenen können Sie Ihre TYPO3 Webseite mit neuen Fähigkeiten ausstatten. 

In diesem Teil unseres Wikis zeigen wir zum einen die Grundzüge der Programmierung von Erweiterungen auf. Zum anderen schildern wir die Möglichkeiten, eine Extension auf eigene Layouts und Designs anzupassen, wobei die Extension selber nicht verändert wird und damit jederzeit upgedatet werden kann.

TYPO3 Extension Programmierung

Extensions sind ein wichtiges Werkzeug zur Erweiterung der Funktionen von TYPO3. Eine Extension kann alles sein: Eine Nachrichtenverwaltung, ein Kontaktformular, eine Bildergalerie oder ein Eventkalender. In diesem Fall schildern wir Ihnen ein paar Fakten zur Programmierung einer TYPO3 Extension mit Extbase und Fluid anhand unserer Blog Extension, die auf dieser Webseite zum Einsatz kommt.

Fluid Templates

Fluid Templates sind der Standard zur Generierung von Inhalten in TYPO3. Dies gilt für das Templating, also die Gestaltung von HTML-Vorlagen für die gesamte Webseite, genauso wie für die Gestaltung des HTML-Outputs einer Extension.

Fluid Partials

Bei Partials in TYPO3 handelt es sich im wesentlichen um Fluid Templates, die in die die Generierung bestimmter Inhalte einer Webseite ausgegliedert ist. Für dieses Vorgehen gibt es mehrere Gründe. Zum einen werden die einzelnen Dateien übersichtlicher. Zum anderen können die Dateien einfacher per GIT versiniert und von mehreren Entwicklern bearbeitet werden.

Fluid Layouts

Ein Fluid Layout bildet die Grundlage für die Einbindung von Fluid Templates. Das bedeutet: Wenn man ein Basis Fluid (HTML) Template über das Setup in die Webseite eingebunden hat, verweist die erste Zeile in diesem Template auf die Layout-Datei. Den Suchpfad dazu gibt man ebenfalls im Setup an.

Die Layout-Datei bildet nun quasi das Inhaltsverzeichnis für die folgenden Schritte. Diese Datei sagt der Rendering Engine von TYPO3, welche weiteren Dateien nun nacheinander abgearbeitet werden sollen.

XLF Language Datei

Eine TYPO3 Extension bietet die Möglichkeit, Inhalte für verschiedene Sprachen in XLF-Dateien zu verwalten.

News Extension

Die News Extension ist eine der beliebtesten Extensions in TYPO3 zur Verwaltung und Darstellung von Nachrichten auf einer TYPO3 Webseite. Hier erfahren Sie mehr über die Konfiguration der News: Wie bindet man eigene Templates ein, ohne den Inhalt der Extension selbst zu überschreiben und damit updates weiterhin möglich zu machen? Wie bindet man die jüngsten Beiträge aus den News in alle Seiten einer Webseite ein?

Antworten auf diese Fragen finden Sie in unserem Wiki.

Provider Extension

Eine Provider Extension ist der Königsweg zur Konfiguration einer TYPO3 Webseite. In einer solchen Erweiterung, auch Site Package genannt, können Sie alle Fluid Vorlage, alle Dateien für CSS und JavaScript und das gesamte TypoScript einer Webseite speichern. Mit einem Befehl wird diese Konfiguration an Ihre Webseite angeschlossen.

Title und META Tags in Extension

Für eine gute Suchmaschinenoptimierung der Webseite, auch kurz SEO genannt, ist es förderlich, die META-Tags der eigenen Webseite mit Inhalten zu füllen. Im Idealfall sollten diese Inhalte das beschreiben, was man in der Seite vorfindet. In Fall einer Extension in TYPO3 bedeutet dies, wenn man sie selbst programmiert, dass man die Schnittstellen des TYPO3 Core nutzen sollte, um die Ausgabe der fertigen Webseite mit eigenen Daten für die META-Tags zu befüllen. 

Datenbank Funktionen des Repository

Sinn des Repository in einer Extension ist es, Daten aus der Datenbank holen, schreiben oder bearbeiten. Neben dem bisherigen QueryResultInterface gab es im Repository stets die Möglichkeit, Datenbanken direkt mit SQL-Code abzufragen. Dies ist mit der LTS 9 von TYPO3 nicht mehr möglich. Entsprechende Abfragen müssen umgeschrieben werden. Für den Fall des IBK Blogs habe ich diese exemplarisch durchgezogen. Der Aufwand lohnt sich, denn man erhält nicht nur bessere Fehlermeldungen bei Fehlern in der SQL-Syntax, der Code wird auch strukturierter und leichter durchschaubar.

Weitere Funktionen im Repository

Im Repository können weitere Funktionen geschrieben werden, die nicht in Zusammenhang mit einem Zugriff auf eine Datenbank stehen.

Der Extension Controller

Hier spielt das Leben! Nach dem Model und vor der View ist der Controller der zentrale Bestandteil einer Extension (Umsetzung des MVC Modells). Hier laufen die Actions ab, hier wird das Respository abgefragt und hier werden den Templates Daten rübergeschickt.

Thomas Berscheid ⧉ 06.08.2020