Skip to main navigation Skip to main content Skip to page footer

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'