Direkt zum Seiteninhalt springen

Site Sets - Die Evolution der Kon­fi­gu­ra­ti­on von TYPO3

Der Minimalanspruch an ein Konfigurationsmanagement sollte immer die folgenden Punkte umfassen: Verlässlichkeit und Validierbarkeit. Die mit TYPO3 9 LTS eingeführte Site-Configuration hat diesen Anspruch umgesetzt. Konfigurationen werden in Dateien gespeichert, die einfach im Versionsmanagement revisionierbar sind. Das Site-Configuration-Modul validiert die eingegebenen Werte auf strikte Typisierung und setzt ggf. Standardwerte.

Die mit TYPO3 13 LTS eingeführten Site Sets ergänzen eine weitere wichtige Komponente: Wiederverwendbarkeit. Denn wer hat sich nicht schon darüber geärgert, eine bereits erledigte Ausgabe immer und immer wieder wiederholen zu müssen.

Neugeordnete Konfigurationsstruktur in TYPO3

Site Sets in der Theorie

Site Sets sind eine “Klammer” für alle Site-Settings, TypoScript und TSConfig-Konfigurationen, die innerhalb des Bereichs (Scope) einer einzelnen Website benötigt werden. Sie lassen sich zudem flexibel um zusätzliche Einstellungen für aktive Content-Elemente erweitern. Da sich Site Sets beliebig wiederverwenden lassen , sind sie besonders in Multidomain-Projekten hilfreich. Im Grunde bündeln sie alle verfügbaren Konfigurationen einer Extension im Ordner Configuration/Sets/MyExtension

Dieser Ordner dient als "Behälter" für alle Einstellungen (Settings, TypoScript, TSConfig and enabled content elements) der jeweiligen Extension. Die “Sets” werden nun über die Seitenkonfiguration als Abhängigkeiten eingebunden und werden hiermit automatisch geladen, geordnet und eventuelle Dopplungen herausgenommen. Das klassische Templating über sys_template oder per @import von TypoScript-Dateien fällt weg.

Begrifflich unterscheiden lassen sich "Site Sets" (die üblicherweise in der Template-Provider-Extension konfiguriert werden) von "Sub Sets" (die von Dritt-Extensions geliefert werden). Hierbei handelt es sich um Konfigurationspakete, die ausschließlich die Konfiguration dieser Extension abbilden und von den Site Sets inkludiert werden.

Dabei kann für alle Konfigurationspakete auf die Errungenschaften der Site-Configuration zurückgegriffen und strikte Typisierung genutzt werden. Es werden also nur Werte akzeptiert, die in die Definition fallen und es gibt ein Fallback auf definierte Defaults, wenn Einstellungen nicht gesetzt wurden. Als Resultat werden alle aktiven Settings inklusive Fallback direkt als TypoScript-Konstante und Fluid-Variable bereitgestellt. Die Sets mit Default-Settings lassen sich auch auf mehreren Seiten gleichzeitig einsetzen, wobei die Settings jederzeit in den jeweiligen Seiten-Konfigurationen überschrieben werden können. Hier wurde auch ein übersichtliches UI im Backend entwickelt.

Site Sets in der Praxis

Wir erläutern die Nutzung von Site Sets und Settings anhand unserer Provider-Extension f7templates, mit der wir die Templates bereitstellen und die Seitenkonfiguration definieren. Hier haben wir ein umfangreiches Set erstellt, was die gängigsten Konfigurationen bündelt:

Set-Definition unserer Provider-Extension

Set-Definition unserer Provider-Extension

Wenn wir uns die config.yaml anschauen, sind vor allem die Dependencies interessant, da wir hierüber zentral die Einbindung der anderen Extensions steuern. Nur Extensions, die hier definiert werden, sind auf der jeweiligen Site verfügbar. Das bedeutet, wir können beispielsweise ein großes Paket an eigenen Content-Elementen installieren, diese jedoch nur für einzelne Site aktivieren.

 

name: f7/f7templates
label: F7 Templates
dependencies:
  # Basics
  - f7/f7base
  - f7/f7elements
  # Content Blocks
  - f7/f7slider
  - f7/f7teaser
  # Extensions
  - f7/f7events
  - f7/f7forms
  - f7/f7seo

f7templates/Configuration/Sets/F7templates/config.yaml

Außerdem bereiten wir über die settings.definitions.yaml einige Definitionen mit Default-Werten vor, welche später individuell pro Seite konfiguriert werden können:

 

categories:
 f7.f7templates:	
   label: 'Template'
   parent: f7
settings:
 f7.theme.copyright:
   category: f7.f7templates
   label: 'Copyright'
   description: 'Copyright information that is displayed in the footer, for example.'
   type: string
   default: ''
 f7.theme.navigation.footer:
   category: f7.f7templates
   label: 'Footer Navigation'
   description: 'Comma separated list of page IDs for footer navigation'
   type: string
   default: ''
 f7.theme.navigation.meta:
   category: f7.f7templates
   label: 'Meta Navigation'
   description: 'Comma separated list of page IDs for meta navigation'
   type: string
   default: ''

f7templates/Configuration/Sets/F7templates/settings.definitions.yaml

Nun haben wir die Grundlage dafür geschaffen, dass über das Set “f7/f7templates” andere Extensions eingebunden und grundlegende Settings bereitgestellt werden.

Wie werden unsere Konfigurationen in die Seite eingebunden und damit aktiv?

Hierzu muss die Abhängigkeit für unser Provider-Set in die Seiteneigenschaften eingebunden werden. Damit werden dann alle weiteren Konfigurationen automatisch geladen, sortiert, von Duplikaten befreit und die Settings als Konstanten bereitgestellt.

 

base: '%env(ENVIRONMENT_URL_1)%'
dependencies:
 - f7/f7templates
errorHandling:
 - errorCode: 404
   errorHandler: Page
   errorContentSource: 't3://page?uid=2'

config/sites/mysite/settings.yaml

Wo setze ich die Werte für die Einstellungen meiner Seite fest?

Auch dies erfolgt zentral über die Seitendefinition. Hier können alle Werte überschrieben werden, die nicht dem Fallback entsprechen.

 

f7:
 theme:
   color: '#00447c'
   copyright: 'F7 Media GmbH - Mission Discovery'
   navigation:
     footer: '3,4'
     meta: '18,19'

config/sites/mysite/settings.yaml

Ausblick: Presets und Themes

Mit der Einführung von SiteSets in TYPO3 wird die Konfiguration von Websites auf eine neue Ebene gehoben. SiteSets ermöglichen es Entwicklern, sogenannte "Presets" zu definieren – vorgefertigte Konfigurationen, die sich mühelos auf verschiedene Projekte anwenden lassen. Diese Presets bündeln zentrale Einstellungen wie Layouts, Inhaltselemente, Design-Templates, und sogar Erweiterungen. Hierdurch werden vorgefertigte Schablonen ähnlich der Themes bei WordPress möglich. Einige Beispiele hierzu wurden auf dem TYPO3 Surfcamp 2024 gebaut, so zum Beispiel der Corprorate Preset.

Somit sind SiteSets ein großer Schritt dazu, TYPO3 wirtschaftlicher, effizienter und übersichtlicher zu machen.

Danksagung

Vielen Dank an Ben Franzke für seine großartigen Vortrag auf den TYPO3 Developer Days 2024 und die Erlaubnis, Auszüge aus seinem Folienset für diesen Vortrag nutzen zu dürfen.