TypoScript (und Page TsConfig/User TsConfig) lässt sich schon immer direkt aus Extensions einbinden, ohne dass der Integrator noch etwas tun muss. Eigentlich toll – wir sind ja alle gerne etwas faul und froh, uns Arbeit sparen zu können.
Was aber, wenn es viel davon wird? Was, wenn unser TYPO3 eine Multi-Site-Instanz ist mit unterschiedlichen Layouts, Inhaltselemente und Anforderungen? Da kann unnötiges TypoScript schnell zum Fluch werden.
Mehr Page TsConfig wagen
Das war eine Empfehlung von Jens Engelmann auf linkedIn, der ich generell zustimme. Mit PageTs kann man viele schöne Sachen machen und das Backend für Redakteure (und Admin!) bedienbarer machen.
Die Empfehlung hat mich aber auch zum Nachdenken gebracht: Warum muss ich als Integrator mir Extra-Arbeit machen, um Dinge, die ich gar nicht haben will, wegzumachen? Warum sind viele Dinge „einfach da“? Warum drücken mir die Entwickler von Extensions so viel Zeug einfach auf???
Wege zur automatischen Einbindung von TypoScript / TsConfig
Die globale Einbindung von Page TsConfig kann auf verschiedene Arten erfolgen:
- per
page.tsconfig
-Datei imConfiguration
-Ordner einer Extension (seit TYPO3 v12.0) - per
ExtensionManagementUtility::addPageTSConfig()
in derext_localconf.php
(TYPO3 v11 und älter)
Die globale Einbindung von User TsConfig kann analog auch auf verschiedene Arten erfolgen:
- per
user.tsconfig
-Datei imConfiguration
-Ordner einer Extension (seit TYPO3 v13.0) - per
ExtensionManagementUtility::addUserTSConfig()
in derext_localconf.php
(TYPO3 v12 und älter)
Die globale Einbindung von TypoScript ist eher die Ausnahme. Hierfür gibt es auch mehrere Wege:
- per
ext_typoscript_setup.typoscript
(bis TYPO3 v11) - per
ExtensionManagementUtility::addTypoScript()
in derext_localconf.php
Super! Die Extension macht jetzt alles von selbst, der Integrator braucht nichts weiter tun, als sie zu installieren.
Nicht ganz, so super, wie auch die Doku sagt:
„This is useful for installations that contain only one site and use only one sitepackage extension.“
Grat-Wanderung – Einsteiger oder Profi
Als TYPO3-Einsteiger hat man meist noch nicht so ganz den Überblick über die Möglichkeiten und Einstellungen von TYPO3. Hier ist es eigentlich gut, wenn jemand einen an die Hand nimmt oder mit „Magie“ alles einfach geht.
Meine erste TYPO3-Website, meine ersten Zeilen TypoScript – da will ich nicht erst tausend Dinge includen müssen. TYPO3 müsste doch wissen, dass ich die Extension XY nutzen möchte, wenn ich sie gerade installiert habe.
Als alter Hase (TYPO3-Profi) weiß hingegen, was es mit TypoScript, Page TsConfig und User TsConfig auf sich hat. Er weiß, was er davon benötigt (und wie er ggf. auch Dinge wieder resettet oder überschreibt).
Meine TYPO3-Instanz ist gewachsen und beinhaltet nun zwei, drei,…hunderte Sites – und nicht alle mit gleichem Layout und Funktionen. Warum muss die Extension XY denn jetzt überall ihre Dinge inkludieren? Ich hab die Extension doch nur installiert, aber noch keiner Site zugeordnet…
Es sowohl dem TYPO3-Einsteiger, als auch dem TYPO3-Profi, recht zu machen, scheint aktuell schwer bis unmöglich :-(
Modulare Einbindung von TypoScript / TSconfig
Für „normales“ TypoScript ist es der übliche Weg: wir teilen TYPO3 lediglich mit, dass etwas inkludierbar ist:
- per
ExtensionManagementUtility::addStaticFile()
inConfiguration/TCA/Overrides/sys_template.php
- per SiteSet in
Configuration/Sets/MySet/setup.typoscript
undConfiguration/Sets/MySet/constants.typoscript
(seit TYPO3 v13.1)
Analog gibt es diese Wege für Page TsConfig:
- per ExtensionManagementUtility::registerPageTSConfigFile() in Configuration/TCA/Overrides/pages.php
- per SiteSet in
Configuration/Sets/MySet/page.tsconfig
(seit TYPO3 v13.1)
Für User TsConfig gibt es diese Weg bisher nicht. Hier bliebe uns nur das BeforeLoadedUserTsConfigEvent :-(
Aber Use-Cases für von einer Extension vordefinierten User TsConfig fallen mir auch gerade keine ein….
Extension-Entwickler aufgepasst!
Liebe Entwickler-Kollegen,
Ja, wir wollen Extensions entwickeln, die schnell einsetzbar sind, für die man möglichst wenig Doku lesen muss, die am besten out-of-the-box laufen, sobald sie installiert sind. Das automatische Laden von TypoScript/TsConfig macht das sehr bequem.
Warum aber unterscheiden wir hier unser Vorgehen zwischen TypoScript und TsConfig so sehr? Für TypoScript ist es de-facto Standard, dass wir mit „Include TypoScript sets“ arbeiten bzw. das TypoScript per @import
importieren lassen. Niemand injeziert sein TypoScript automatisch mit dem Laden seiner Extension. Bei Page TsConfig lassen wir uns (aus alter Gewohnheit?) aber zu sehr zum globalen Pushen verführen…
Bitte lasst uns das genauso modular handhaben.
Welches Page/User TsConfig wo geladen wird, muss zur Entscheidung dem Integrator überlassen werden. Nur so können wir es ermöglichen, dass die Redakteure am Ende ein für sie passendes, schnelles, aufgeräumtes, schlankes Backend zu sehen bekommen – und ihr TYPO3 lieben werden 🧡