Seit TYPO3 13 gehören Site Sets zum Standardwerkzeug für Integratoren. Mit TYPO3 14 LTS sind sie fester Bestandteil moderner Site Packages – inklusive Site Settings, optionaler Abhängigkeiten und neuer Features wie Route Enhancers in Sets. Wer noch mit Static Includes und sys_template-Ketten arbeitet, sollte den Umstieg planen.

Was sind Site Sets?

Site Sets sind zusammensetzbare Konfigurationsbausteine für den Scope einer Site. Eine Extension (oder ein Site Package) liefert einen oder mehrere Sets unter Configuration/Sets/. Jedes Set kann mitbringen:

  • TypoScript Setup und Constants
  • Page TSconfig
  • Site Settings (inkl. Schema und Defaults)
  • Abhängigkeiten zu anderen Sets
  • seit TYPO3 14.1 auch Route Enhancers

Im Unterschied zu klassischen Static Includes werden Sets über die Site-Konfiguration aktiviert – nicht über Template-Datensätze im Seitenbaum. TYPO3 löst Abhängigkeiten rekursiv auf, sortiert sie und dedupliziert sie. So landet TypoScript nicht mehrfach in der Kette, nur weil mehrere Sets dieselbe Abhängigkeit brauchen.

Warum Sets statt Static Includes?

Früher steckte die Frontend-Konfiguration oft in sys_template-Records und langen Include-Listen. Das war fehleranfällig: Reihenfolge manuell pflegen, doppelte Includes, unklare Abhängigkeiten zwischen Extensions. Sets lösen das strukturell:

  • Explizite Dependencies: Abhängigkeiten stehen in config.yaml, nicht versteckt in TypoScript.
  • Automatische Ordnung: TYPO3 lädt Sets in der richtigen Reihenfolge und ohne Duplikate.
  • Site Settings statt Constants-Chaos: typisierte Settings mit Defaults und Backend-Editor im Sites-Modul.
  • Wiederverwendbar: ein Set kann mehreren Sites zugewiesen werden – ideal für Multi-Site-Projekte.

So baut man ein Set

Jedes Set liegt in einem eigenen Ordner unter Configuration/Sets/ und braucht mindestens eine config.yaml:

# EXT:my_sitepackage/Configuration/Sets/MySitepackage/config.yaml
name: my-vendor/my-sitepackage
label: 'My Sitepackage'
dependencies:
  - typo3/fluid-styled-content
  - typo3/fluid-styled-content-css
optionalDependencies:
  - typo3/form

Der name folgt dem Composer-Schema vendor/package und identifiziert das Set eindeutig – er muss nicht dem Extension-Key entsprechen. dependencies sind Pflichtabhängigkeiten; fehlen sie, meldet das Set einen Fehler. optionalDependencies werden nur geladen, wenn die Extension installiert ist (ähnlich wie Composer suggest).

Typische Dateien neben der config.yaml:

  • setup.typoscript / constants.typoscript – Frontend-TypoScript
  • page.tsconfig – Backend-TSconfig für Seiten der Site
  • settings.definitions.yaml – Schema und Defaults für Site Settings
  • settings.yaml – Overrides für Settings abhängiger Sets
  • route-enhancers.yaml – Routing-Presets (ab TYPO3 14.1)

Set einer Site zuweisen

Sets werden in der Site-Konfiguration unter dependencies eingetragen – im Backend unter Sites → Setup oder direkt in der YAML:

# config/sites/my-site/config.yaml
base: 'https://example.com/'
rootPageId: 1
dependencies:
  - my-vendor/my-sitepackage

Welche Sets verfügbar sind, zeigt der Console-Befehl:

vendor/bin/typo3 site:sets:list

Wichtig bei gemischten Setups: Wenn noch ein TypoScript-Template (sys_template) parallel aktiv ist, muss die Checkbox „Clear“ für Constants und Setup deaktiviert sein – sonst werden die Set-Inhalte verworfen.

Site Settings: typisierte Konfiguration

Settings ersetzen viele bisherige TypoScript-Constants. In settings.definitions.yaml definieren Sie Typ, Label und Default – redaktionell steuerbar im Site-Settings-Editor:

# settings.definitions.yaml
categories:
  MySitepackage:
    label: 'Sitepackage'

settings:
  MySitepackage.favicon:
    label: 'Favicon'
    category: MySitepackage
    type: string
    default: 'EXT:my_sitepackage/Resources/Public/Icons/favicon.ico'
  MySitepackage.footerMenuRoot:
    label: 'Footer-Menü (Seiten-ID)'
    category: MySitepackage
    type: int
    default: 0

Im TypoScript greifen Sie mit der gewohnten Constants-Syntax zu – Site Settings überschreiben dabei Set-Constants:

page = PAGE
page {
  shortcutIcon = {$MySitepackage.favicon}
  10 = PAGEVIEW
  10 {
    dataProcessing {
      40 = menu
      40 {
        as = footerMenu
        special = directory
        special.value = {$MySitepackage.footerMenuRoot}
      }
    }
  }
}

Geänderte Werte landen in config/sites/<site>/settings.yaml. Defaults abhängiger Sets (z. B. Fluid Styled Content) überschreiben Sie im eigenen Set über settings.yaml.

Mehrere Sets pro Extension

Extensions können funktionale Bausteine als eigene Sets ausliefern – etwa Basis-Setup, Styles und RSS getrennt. So aktivieren Integratoren nur, was sie brauchen. Abhängigkeiten zwischen diesen Sets steuern die Ladeordnung; Kreuz-Imports per @import zwischen Extensions sollten Sie vermeiden und stattdessen Set-Dependencies nutzen. Lokale @import-Statements innerhalb eines Sets bleiben sinnvoll.

Praxis-Tipps für Upgrades und Projekte

  • Site Packages auf Sets umstellen: TypoScript aus Configuration/TypoScript/ per @import ins Set laden, Static Includes schrittweise entfernen.
  • Core- und Extension-Sets nutzen (z. B. typo3/fluid-styled-content), statt TypoScript manuell zu inkludieren.
  • Settings mit Vendor-Präfix benennen, damit Keys global eindeutig bleiben.
  • Hilfs-Sets, die nur intern gebraucht werden, mit hidden: true aus der Backend-Auswahl ausblenden.
  • Bei TYPO3 14 gemeinsame Routing-Presets als route-enhancers.yaml im Set ausliefern.

Fazit

Site Sets sind das moderne Rückgrat der Site-Konfiguration in TYPO3 13 und 14: klar versionierbar, wiederverwendbar und ohne die Fehleranfälligkeit klassischer Template-Includes. Wer Site Packages neu aufsetzt oder ein Upgrade plant, sollte Sets und Site Settings von Anfang an mitdenken – das spart später Pflegeaufwand und macht Multi-Site-Setups deutlich robuster.

Mehr zu TYPO3 14 LTS finden Sie im Beitrag TYPO3 14 LTS – Die Next Generation des Enterprise-CMS.