YAML to TCA - Eine TYPO3-Extension für bessere TCA-Konfiguration
Die Extension mst_yaml2tca bietet eine elegante Lösung für ein häufiges Problem in der TYPO3-Entwicklung: Die Definition von TCA (Table Configuration Array) Elementen. Statt komplexer PHP-Arrays ermöglicht sie die Konfiguration mittels übersichtlicher YAML-Dateien.
Die Hauptvorteile
- Bessere Lesbarkeit durch YAML-Syntax
- Reduzierung von Boilerplate-Code
- Automatische Integration von FlexForms
- Automatisch Einbindung in den “New Content Element Wizard”
- Unterstützung für Container-Elemente.
Installation
Die Installation erfolgt am einfachsten via Composer:
composer require mst/mst-yaml2tca
Grundlegende Einrichtung
Um die YAML-Konfiguration zu laden, muss folgender Code in die TCA-Override-Datei der Extension eingefügt werden:
$register = GeneralUtility::makeInstance(\MST\MstYaml2Tca\Tca\Registry::class);
$register->loadFile(
$extKey,
GeneralUtility::getFileAbsFileName('EXT:[yourextension]/Configuration/Yaml/Elements.yaml')
);
Besonderheiten der Konfiguration
Content Elements mit verbesserter Lesbarkeit
Ein besonderes Merkmal der Extension ist die Möglichkeit, showitem-Einträge als Arrays zu definieren. Dies erhöht die Lesbarkeit deutlich gegenüber der klassischen Komma-separierten String-Notation:
Paletten mit Array-Struktur
Auch bei Paletten kommt die übersichtliche Array-Struktur zum Einsatz:
palettes:
tt_content:
custom_header:
label: 'Erweiterter Header'
showitem:
- header
- header_layout
- --linebreak--
- subheader
- header_position
Weitere Konfigurationsmöglichkeiten
Spalten (Columns)
columns:
tt_content:
custom_color:
label: 'Farbe'
config:
type: color
valuePicker:
items:
- ['Rot', '#FF0000']
- ['Blau', '#0000FF']
Container
container:
three_column:
label: '3-Spalten Layout'
description: 'Dreispaltiges Container-Element'
iconIdentifier: content-container-columns-3
config:
-
-
name: "links"
colPos: 1000
-
name: "mitte"
colPos: 1001
-
name: "rechts"
colPos: 1002
FlexForm-Integration
Die Extension sucht automatisch nach FlexForm-Konfigurationen in folgenden Verzeichnissen:
- Configuration/FlexForms/ContentElements/[ElementName].xml
- Configuration/FlexForms/Plugins/[PluginName].xml
- Configuration/FlexForms/Containers/[ContainerName].xml
Alternativ kann der Pfad auch direkt in der YAML-Konfiguration angegeben werden:
contentElements:
my_group:
elements:
my_element:
flexform: 'EXT:my_extension/Configuration/FlexForms/Custom.xml'