Knowledge

Content Blocks Inhaltselemente, die zur Redaktion passen

Ein Teaser mit Bild und Button, ein Akkordeon für häufige Fragen, eine Box mit Ansprechperson: Mit Content Blocks bekommt jedes dieser Elemente in TYPO3 genau die Felder, die die Redaktion dafür braucht. Für die Entwicklung steckt alles Nötige in einem Ordner.

Was Content Blocks sind

Content Blocks ist eine Extension für TYPO3, mit der sich eigene Inhaltselemente, Seitentypen und Datensätze anlegen lassen. Entwickelt wird sie vom Content Types Team der TYPO3-Community gemeinsam mit dem Core-Team, das Paket heißt friendsoftypo3/content-blocks.

Jedes Inhaltselement bekommt einen eigenen Ordner. Darin liegen eine Datei config.yaml mit den Feldern, das Fluid-Template für die Website, auf Wunsch eine eigene Vorschau für das Backend, die Beschriftungen für die Redaktion und ein Icon:

ContentBlocks/ContentElements/accordion/
  • assets
    • icon.svg Icon im Backend
  • language
    • labels.xlf Beschriftungen und Hilfetexte
  • templates
    • backend-preview.fluid.html Vorschau im Seitenmodul
    • frontend.fluid.html Ausgabe auf der Website
  • config.yaml Felder des Elements

Aus diesem Ordner erzeugt Content Blocks alles, was TYPO3 für ein Inhaltselement braucht: die Feldkonfiguration im TCA, die Datenbankfelder, das TypoScript für die Ausgabe und den Eintrag im Assistenten für neue Inhaltselemente. Ein Element lässt sich deshalb als Ordner in ein anderes Projekt kopieren und steht dort sofort zur Verfügung.

Aufbau am Beispiel eines Akkordeons

Die config.yaml legt fest, welche Felder ein Element hat. Für ein Akkordeon reichen eine Überschrift und beliebig viele Einträge mit Titel und Text:

config.yaml
name: neuedaten/accordion
fields:
  - identifier: header
    useExistingField: true
  - identifier: items
    type: Collection
    labelField: title
    minitems: 1
    fields:
      - identifier: title
        type: Text
        required: true
      - identifier: text
        type: Textarea
        enableRichtext: true

Die Überschrift nutzt das Feld header, das jedes Inhaltselement in TYPO3 ohnehin hat. Die Einträge sind eine Collection: Die Redaktion legt so viele an, wie sie braucht, und sortiert sie per Drag-and-drop. Der Titel ist Pflicht, der Text bekommt den Rich-Text-Editor. In der labels.xlf stehen die deutschen Beschriftungen, und das Fluid-Template greift direkt auf die Felder zu.

Für die Entwicklung ist das angenehm kompakt. Dazu kommt ein JSON-Schema: Beim Schreiben der config.yaml schlägt die Entwicklungsumgebung damit Feldtypen und Optionen vor.

Was die Redaktion davon hat

Ein Inhaltselement aus Content Blocks zeigt im Backend die Felder, die zu genau diesem Inhalt gehören. Ein Teaser hat ein Bild, eine Überschrift, einen kurzen Text und einen Link. Ein Akkordeon hat Fragen und Antworten. Das Formular bleibt übersichtlich, weil es nur anbietet, was das Design auch darstellt.

Pflichtfelder, Hilfetexte unter den Feldern und eine kurze Beschreibung im Assistenten für neue Inhaltselemente erleichtern die Auswahl. Die Backend-Vorschau zeigt im Seitenmodul, was in einem Element steckt, ohne es zu öffnen. Mehrsprachigkeit und Benutzerrechte funktionieren wie bei den Standardelementen von TYPO3: Für jede Gruppe lässt sich festlegen, welche Elemente und Felder sie nutzen darf.

In meinen Projekten entwickle ich die Inhaltselemente als Content Blocks, passend zu den Inhalten und zum Design der jeweiligen Website. Auf den Websites von Stadtwerken bekommen so auch wiederkehrende Inhalte wie Störungen, Preisblätter oder Stellenanzeigen eigene Eingabemasken.

Wie Inhaltselemente vorher entstanden

Ohne Hilfsmittel verteilt sich ein eigenes Inhaltselement auf mehrere Stellen einer Extension: die Feldkonfiguration im TCA, die Datenbankfelder in der ext_tables.sql, TypoScript für die Ausgabe, der Eintrag im Assistenten, dazu Template und Sprachdateien. Das ist übrigens bis heute der Weg, den der Core selbst geht. Content Blocks bündelt genau diese Einträge in einem Ordner und erzeugt sie beim Laden.

Mask hat das Anlegen eigener Elemente in eine Oberfläche im Backend verlegt. Die Felder werden dort zusammengestellt, die Konfiguration landet in einer Datei mask.json. Content Blocks folgt in vielen Punkten der Architektur von Mask und gilt als dessen Nachfolger. Mask selbst ist seit TYPO3 v13 als veraltet markiert und bekam Fehlerkorrekturen bis zum Ende der regulären Wartung von TYPO3 v13 am 30. April 2026. Offizielle Pläne für TYPO3 v14 gibt es keine.

DCE (Dynamic Content Elements) definiert Elemente ebenfalls im Backend und speichert die Inhalte als FlexForm, also als XML in einem einzigen Datenbankfeld. Ähnlich arbeiten Flux und, aus den frühen Jahren von TYPO3, TemplaVoilà, das zusätzlich die Seitentemplates verwaltete. DCE und Flux werden weiter gepflegt und laufen auch mit TYPO3 v14. Content Blocks legt dagegen für jedes Feld eine eigene Spalte und für Collections eine eigene Tabelle an. Die Inhalte sind dadurch einfacher auszuwerten, zu übersetzen und später zu migrieren.

Content Blocks und der TYPO3-Core

Ursprünglich sollte Content Blocks fest in TYPO3 einziehen. 2024 haben sich das Core-Team und das Content Types Team für einen anderen Weg entschieden: Einzelne Bausteine wandern in den Core, die Extension bleibt eigenständig. Seit TYPO3 v13 enthält der Core unter anderem die Record API, auf der Content Blocks seit Version 1.0 aufbaut.

Stand Oktober 2026 gibt es Content Blocks in zwei Linien: Version 2 für TYPO3 v14 und Version 1 für TYPO3 v13. Beide bekommen regelmäßig Updates. In TYPO3 v14 bleibt Content Blocks eine eigene Extension, an weiteren Schritten in Richtung Core für TYPO3 v15 arbeitet das Team. Dazugekommen ist 2026 die Extension Content Blocks GUI, mit der sich Elemente in einer Oberfläche zusammenstellen lassen. Das Ergebnis sind wieder Dateien, die in die Versionsverwaltung wandern.

Was Content Blocks für Wartung und Upgrades bedeutet

Weil jedes Element aus Dateien in einer Extension besteht, liegt es in der Versionsverwaltung. Änderungen an einem Element sind nachvollziehbar, lassen sich auf einer Testumgebung prüfen und gehen mit dem nächsten Deployment live. Auf Staging und Live läuft damit immer dieselbe Definition.

Für ein Upgrade heißt das: Die eigenen Elemente bestehen aus Konfiguration und Fluid-Templates, eigener PHP-Code gehört nicht dazu. Mit dem Wechsel auf eine neue TYPO3-Version kommt die passende Version von Content Blocks, beim Sprung von TYPO3 v13 auf v14 also Version 2 statt Version 1. Was sich dabei ändert, dokumentiert das Changelog der Extension.

Bei Websites mit Mask hilft das Migrationswerkzeug mask-to-content-blocks. Es erzeugt aus der mask.json gleichwertige Content Blocks, die vorhandenen Daten bleiben unverändert in der Datenbank. Die Templates werden übernommen und brauchen gelegentlich Nacharbeit. Bei Elementen aus DCE, Flux oder TemplaVoilà ziehen die Inhalte aus dem XML in eigene Felder um. Diese Datenmigration gehört in die Planung des Upgrades, genauso wie der Umstieg von Mask, wenn das Ziel TYPO3 v14 ist. Wie ich gewachsene Installationen einordne, beschreibe ich unter TYPO3-Website übernehmen.

FAQ

Häufige Fragen zu Content Blocks

Ist Content Blocks Teil des TYPO3-Core?

Nicht vollständig. Content Blocks ist eine eigene Extension (friendsoftypo3/content-blocks), die das TYPO3-Core-Team gemeinsam mit dem Content Types Team pflegt. Einzelne Bausteine sind seit TYPO3 v13 im Core, etwa die Record API, auf der Content Blocks aufbaut. An der weiteren Integration in den Core von TYPO3 v15 arbeitet das Team.

Was ist der Unterschied zwischen Mask und Content Blocks?

Mit Mask werden Inhaltselemente in einer Oberfläche im Backend zusammengestellt. Bei Content Blocks liegt jedes Element als Ordner mit einer config.yaml und Fluid-Templates in einer Extension und damit in der Versionsverwaltung. Mask gilt seit TYPO3 v13 als veraltet, das Mask-Team empfiehlt den Umstieg auf Content Blocks. Dafür gibt es ein Migrationswerkzeug, das ohne Datenbankmigration auskommt.

Gibt es eine grafische Oberfläche für Content Blocks?

Ja. Die Extension Content Blocks GUI ist seit 2026 in Version 1.0 verfügbar und läuft mit TYPO3 v13 und v14. Sie ist ein Werkzeug für die Entwicklung: Die erzeugte Konfiguration und die Templates kommen anschließend in die Versionsverwaltung. Die Redaktion arbeitet mit den fertigen Inhaltselementen.