Skip to main navigation Skip to main content Skip to page footer
TYPO3 14: Das neue Rendering-Konzept mit ContentArea und f:render ViewHelpern

TYPO3 14: Das neue Rendering-Konzept mit ContentArea und f:render ViewHelpern

Artikel vorlesen lassen

Loading the Elevenlabs Text to Speech AudioNative Player...
| TYPO3 | Geschätzte Lesezeit : min.

TYPO3 14.2 bringt neue ViewHelper für das Frontend-Rendering. Statt Schleife und f:cObject reicht jetzt eine Zeile. Was sich für Integratoren ändert und wie du die neuen Features nutzt.

Mit TYPO3 v13 wurde das PAGEVIEW cObject eingeführt. Version 14.2 baut darauf auf und liefert jetzt deutlich mehr Kontext für deine Templates. Content-Elemente kommen nicht mehr als einfache Liste, sondern als strukturierte Objekte mit allen relevanten Spalten-Informationen.

In der Praxis heißt das: Weniger Code im Template, automatische TypoScript-Auflösung und kontextabhängiges Rendering ohne Umwege.

Das Konzept: ContentArea-Objekte

Bisher hast du Content-Elemente als Liste bekommen und per Schleife gerendert. Mit TYPO3 14.2 bekommst du stattdessen ContentArea-Objekte. Jede Spalte deines Backend-Layouts wird zu einem eigenen Objekt mit allen relevanten Informationen:

  • records: Die Content-Elemente als vollständig aufgelöste Record-Objekte
  • identifier: Der Spalten-Identifier aus dem Backend-Layout (z.B. main, sidebar)
  • colPos: Die colPos-Nummer
  • name: Der sprechende Name der Spalte
  • configuration: Die komplette Spalten-Konfiguration
  • allowedContentTypes / disallowedContentTypes: Welche Content-Typen in dieser Spalte erlaubt oder verboten sind
  • slideMode: Der definierte Slide-Mode

Der Zugriff im Template:

{content.main.records}

Das liefert alle Content-Elemente der Spalte main. Weil du jetzt weißt, in welcher Spalte ein Element liegt, kannst du kontextabhängig rendern. Ein Beispiel: Der Header-Partial wird nur angezeigt, wenn das Element nicht in der Sidebar liegt.

Performance: Die ContentArea-Objekte werden erst geladen, wenn du sie tatsächlich abrufst (Lazy Loading). Eine Spalte, die du im Template nicht verwendest, verursacht keine Last.

f:render.contentArea: Weniger Code, gleiche Funktionalität

Bisher sah das Rendern einer Content-Spalte so aus:

<f:for each="{content.normal.records}" as="contentElement">
    <f:cObject
        typoscriptObjectPath="{contentElement.mainType}"
        table="{contentElement.mainType}"
        data="{contentElement}"
    />
</f:for>

Mit dem neuen ViewHelper:

<f:render.contentArea contentArea="{content.normal}" />

Der ViewHelper übernimmt die Schleife intern und ruft für jeden Record das passende TypoScript-Setup auf. Du musst typoscriptObjectPath nicht mehr selbst angeben, das ermittelt der ViewHelper automatisch über den Record-Typ.

f:render.record: Einzelne Records rendern

Das gleiche Prinzip gilt für einzelne Records:

<f:render.record record="{record}" />

Der ViewHelper ermittelt selbstständig, welches TypoScript-Setup für den Record gilt (über $record->getMainType()). Das funktioniert nicht nur für tt_content, sondern für beliebige Datenbank-Records. Voraussetzung: Du hast das TypoScript-Rendering für die jeweilige Tabelle konfiguriert.

Ein Beispiel: Du hast eigene Datensätze in tx_myext_product und ein passendes TypoScript-Setup. Mit f:render.record kannst du diese Records genauso einfach rendern wie Content-Elemente.

PSR-14 Events für Extension-Entwickler

Beide ViewHelper dispatchen nach dem Rendern ein PSR-14 Event (ModifyRenderedContentAreaEvent bzw. ModifyRenderedRecordEvent). Damit können Extension-Entwickler das gerenderte HTML nachträglich modifizieren, ohne dass du als Integrator dein Template anpassen musst.

Ein typischer Anwendungsfall: Eine Debug-Extension, die im Development-Kontext zusätzliche Informationen um jedes Content-Element anzeigt.

Für den normalen Integrator-Alltag ist das weniger relevant. Aber es zeigt, dass TYPO3 hier eine saubere Architektur aufbaut, die auch für Tool-Entwickler offen ist.

Was sich für dich ändert

Weniger Boilerplate: Die f:for-Schleife mit f:cObject kannst du durch eine Zeile ersetzen.

Automatische TypoScript-Auflösung: Du musst nicht mehr manuell typoscriptObjectPath angeben. Der ViewHelper weiß selbst, welches Setup er braucht.

Mehr Kontext im Template: Die ContentArea-Objekte liefern dir alle Spalten-Informationen. Kontextabhängiges Rendering (z.B. andere Darstellung je nach Spalte) wird einfacher.

Zukunftssicher: Wer jetzt mit PAGEVIEW und den neuen ViewHelpern arbeitet, nutzt die Architektur, auf die TYPO3 setzt.

Quellen

Die vollständige Dokumentation findest du im offiziellen TYPO3 ChangeLog:


Wenn du PAGEVIEW und die neuen Rendering-Konzepte von Grund auf lernen willst: Ich arbeite gerade an einem TYPO3 Komplettkurs, der mit jeder Version aktualisiert wird. Trag dich auf die Warteliste ein, wenn du zum Start dabei sein willst.

Zurück

Kommentare unter Artikeln sind deaktiviert. Wenn du eine Frage oder Ergänzung hast, schreib mir bitte eine E-Mail.

Hi, ich bin Wolfgang.

Seit 2006 arbeite ich mit TYPO3. Nicht in der Theorie, sondern in echten Projekten mit echten Deadlines. Die Probleme, die du gerade hast, hatte ich wahrscheinlich schon dreimal.

Irgendwann habe ich angefangen, mein Wissen in Videokurse zu packen. Nicht weil ich gerne vor der Kamera stehe, sondern weil ich dieselben Fragen immer wieder gehört habe. Mittlerweile sind es Hunderte Videos geworden. Jedes Einzelne entstand aus einer konkreten Frage aus einem konkreten Projekt.

Was mich von einem YouTube-Tutorial unterscheidet: Ich kenne nicht nur die Lösung, sondern auch den Kontext. Warum etwas so funktioniert. Wann es nicht funktioniert. Und welche Fehler du dir sparen kannst, weil ich sie schon gemacht habe.

Als Mitglied im TYPO3 Education Committee sorge ich dafür, dass die Zertifizierungsprüfungen auf dem aktuellen Stand bleiben. Was dort geprüft wird, fließt direkt in meine Kurse ein.

Der TYPO3 Newsletter

TYPO3-Insights direkt in dein Postfach! 
Hol dir monatliche Updates, praktische Tipps und spannende Fallstudien. 
Übersichtlich, zeitsparend, ohne Spam. 
Bist du dabei? Jetzt für den Newsletter anmelden!

Trage dich hier ein, um den Newsletter zu erhalten.