TYPO3 Inhalts elemente: Flexform vs. TCA

Suchen Sie die Unterschiede zwischen TYPO3 Flexform und TCA? Treffen Sie die richtige Wahl für Ihre Webentwicklungsprojekte. Lesen Sie die Vergleiche!

TYPO3 Inhalts elemente: Flexform vs. TCA

FYI. This blog is translated by machine. Please ignore any spelling and grammar errors; sorry for such inconvenience. We appreciate your understanding and support.

Wenn es darum geht, benutzerdefinierte Inhaltslemente in TYPO3 zu erstellen, haben Entwickler hauptsächlich zwei Optionen: FlexForms (im XML-Format) und TCA (Tabellenkonfigurationsarray). In diesem Blogbeitrag werden wir uns ausführlich mit FlexForms und TCA befassen, um Ihnen ihre Unterschiede zu verdeutlichen und Ihnen zu helfen, zu entscheiden, wann Sie eine der beiden Optionen wählen sollten.

Im Zusammenhang mit TYPO3-Inhaltselementen, die in Bezug auf die Erstellung von Standard TYPO3-Vorlagen und Inhaltsblöcken sehr wichtig sind, sollten Sie einige unserer beliebten TYPO3 Blogs überprüfen, wie unten aufgeführt.

TYPO3 Inhalts elemente verstehen

Bevor wir uns dem Vergleich widmen, nehmen wir uns einen Moment Zeit, um zu verstehen, was TYPO3-Inhaltselemente sind und warum sie für den Aufbau dynamischer und interaktiver Websites so wichtig sind

TYPO3 Inhalts elemente:

In TYPO3 sind Inhaltselemente die Bausteine des Inhalts Ihrer Website. Sie ermöglichen es Ihnen, verschiedene Arten von Inhalten, wie Texte, Bilder, Videos, Formulare und mehr, auf strukturierte und organisierte Weise anzuzeigen. Mit diesen Elementen können Sie alles von einfachen Absätzen bis hin zu komplexen Layouts wie Slidern, Akkordeons und tabellarischem Inhalt erstellen.

Flexform: Der alte Ansatz

FlexForm ist eine der traditionellen Methoden zur Erstellung benutzerdefinierter Inhaltslemente in TYPO3. Sie existiert schon seit geraumer Zeit und hat TYPO3-Entwicklern gut gedient. FlexForms sind eine bewährte Methode zur Konfiguration von Inhaltselementen (CE) oder Plugins in TYPO3. Sie bieten eine flexible Möglichkeit, Konfigurationsdaten in einer XML-Struktur innerhalb einer einzelnen Datenbankspalte zu speichern. Hier sind einige wichtige Aspekte von FlexForms:

Optionale Konfiguration

Ein wesentliches Merkmal von FlexForms ist, dass sie optional sind. Obwohl sie zur Konfiguration von Inhaltselementen oder Plugins verwendet werden können, können Sie diese Elemente auch ohne FlexForms erstellen. Diese Flexibilität ermöglicht es Entwicklern, den für ihre speziellen Anforderungen am besten geeigneten Ansatz zu wählen.

Individuelle Konfiguration

Mit FlexForms können Sie Inhaltselemente oder Plugins unterschiedlich konfigurieren, je nachdem, wo sie hinzugefügt werden. Die über den FlexForm-Mechanismus festgelegte Konfiguration gilt nur für den Inhaltssatz, für den sie konfiguriert wurde. Redakteure können FlexForms im TYPO3 Backend modifizieren und haben so mehr Kontrolle über Plugin-Funktionen und Rendering.

Leistungsstarke Konfiguration

FlexForms bieten umfangreiche Konfigurationsoptionen. Entwickler können Eingabefelder, Auswahllisten und bedingte Anzeigeoptionen sowie andere Funktionen verwenden, um das Verhalten und das Erscheinungsbild von Inhaltselementen oder Plugins genau anzupassen.

XML-basierte Konfiguration

FlexForm speichert seine Konfigurationsdaten in einer XML-Struktur innerhalb einer einzigen Datenbankspalte. Diese XML-Struktur definiert das Aussehen und die Funktionalität des Inhaltselements. Obwohl dieser Ansatz Flexibilität bietet, kann er bei komplexen Elementen schwer zu verwalten und zu ändern sein.

Integration mit beliebten Erweiterungen

Flexform wurde häufig in Verbindung mit beliebten TYPO3-Erweiterungen wie DCE (Dynamic Content Elements) und FluidTYPO3 Flux eingesetzt. Diese Erweiterungen boten eine hervorragende Möglichkeit, komplexe Inhaltselemente mit der Flexform-Technologie zu erstellen.

Flexform: Code Beispiel

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3DataStructure>
    <sheets>
        <sDEF>
            <ROOT>
                <TCEforms>
                    <sheetTitle>Fields</sheetTitle>
                </TCEforms>
                <type>array</type>
                <el>
                    <description>
                        <TCEforms>
                            <label>LLL:EXT:ns_theme_t3karma/Resources/Private/Language/locallang_flex.xlf:ns_alert.description</label>
                            <config>
                                <type>text</type>
                                <rows>5</rows>
                                <cols>30</cols>
                                <eval>trim</eval>
                                <enableRichtext>1</enableRichtext>
                                <richtextConfiguration>default</richtextConfiguration>
                            </config>
                        </TCEforms>
                    </description>
                </el>
            </ROOT>
        </sDEF>
    </sheets>
</T3DataStructure>

Wichtige Informationen über FlexForms in TYPO3

Aspekt Beschreibung
Zweck FlexForms werden zur Konfiguration von Inhaltselementen (CE) oder Plugins in TYPO3 verwendet und ermöglichen die dynamische Konfiguration ihres Aussehens und Verhaltens.
Verwendung FlexForms sind optional, so dass Plugins oder Inhaltselemente auch ohne sie erstellt werden können.
Umfang der Konfiguration FlexForms bietet die Möglichkeit, einzelne Plugins oder Inhaltselemente unterschiedlich zu konfigurieren, je nachdem, wo sie hinzugefügt werden. Redakteure können die Funktionen und das Rendering von Plugins anpassen.
Konfigurations optionen FlexForms bieten verschiedene Konfigurationsoptionen, darunter Eingabefelder, Auswahllisten, bedingte Anzeige und mehr, ähnlich wie TCA.
Struktur Konfigurationsschema: Legt fest, wie Felder in FlexForms mithilfe von XML angeordnet und konfiguriert werden sollen.

FlexForm-Registrierung: Gibt die FlexForm-Schemadatei in der Plugin- oder Inhaltselementregistrierung an.
Anwendungsfälle FlexForms werden verwendet, um Rendering-Optionen zu konfigurieren, z. B. Übergangsintervalle und Typen für Inhaltselemente wie Karussells. Sie werden auch von Erweiterungen wie georgringer/news verwendet.
Wie es funktioniert Die Erweiterung definiert ein Konfigurationsschema im T3DataStructure-Format (XML), das an Inhaltselemente oder Plugins angehängt wird.

Die Konfiguration wird in tt_content.pi_flexform gespeichert. Die Erweiterung liest und handelt auf der Grundlage der Konfiguration.
Änderung Wenn Sie die Datenstruktur einer FlexForm ändern oder von einem Plugin zu einem anderen mit einer FlexForm wechseln, verwenden Sie den CLI-Befehl cleanup:flexforms, um Datensätze zu aktualisieren und Probleme zu vermeiden.
Zugriffsein stellungen Auf die FlexForm-Einstellungen kann von Extbase Controllern, PHP Funktionen, TypoScript und Fluid Vorlagen aus zugegriffen werden, was Flexibilität bei der Anpassung bietet.
Beispiele Beispiele sind die Konfiguration von Rendering-Optionen für Karussells und die Verwendung von FlexForms in Erweiterungen wie georgringer/news.
Glossar Begriffe wie Konfigurationsschema, FlexForm-Registrierung, T3DataStructure und CLI-Befehl cleanup:flexforms sind für FlexForms in TYPO3 relevant.

Diese Tabelle bietet eine Übersicht über das, was FlexForms sind, ihren Zweck, wie sie strukturiert sind und ihre Verwendung in TYPO3 zur dynamischen Konfiguration von Inhaltselementen und Plugins.

TCA: Der moderne Ansatz

TCA (Table Configuration Array) ist der moderne und empfohlene Ansatz zur Erstellung von benutzerdefinierten Inhaltselementen in TYPO3. Hier sind die wichtigsten Merkmale von TCA:

Integration mit TYPO3 Core

TCA ist direkt in den TYPO3-Kern integriert, was eine nativere und nahtlosere Methode zur Erstellung von Inhaltselementen darstellt. Es ist auf die Kernstruktur und Architektur von TYPO3 abgestimmt.

Benutzerfreundliche Konfiguration

TCA verwendet eine strukturierte, auf Arrays basierende Konfiguration, die für den Menschen besser lesbar und handhabbar ist. Dieser Ansatz vereinfacht die Definition der Eigenschaften von Inhaltselementen, was die Arbeit für Entwickler erleichtert.

Definition der Tabelle

Einer der Hauptzwecke des TCA besteht darin, festzulegen, welche Datenbanktabellen im TYPO3-Backend bearbeitbar sind. Ohne einen entsprechenden Eintrag im TCA bleibt die Tabelle für die Bearbeitungsschnittstelle des TYPO3-Backends "unsichtbar". Daher bestimmt der TCA, welche Tabellen für Content-Editoren und Administratoren zugänglich sind.

Beziehungen definieren

TCA definiert Beziehungen zwischen verschiedenen Datenbanktabellen. Sie legt fest, wie verschiedene Tabellen miteinander in Beziehung stehen, so dass TYPO3 komplexe Datenstrukturen und Assoziationen zwischen Datensätzen handhaben kann.

Konfiguration der Backend Anzeige

TCA steuert, wie Tabellen und ihre Felder im TYPO3 Backend angezeigt werden. Dies beinhaltet die Festlegung des Layouts, der Symbole, der Feldbezeichnungen und der Spalten, die in den Backend-Formularen angezeigt werden sollen.

Validierungs regeln

TCA ermöglicht die Definition von Überprüfungsregeln für Felder, z. B. ob ein Feld erforderlich ist, eine ganze Zahl enthalten sollte oder bestimmten Kriterien entsprechen muss. Diese Regeln helfen, die Datenintegrität und -qualität zu erhalten.

Frontend Nutzung

TCA liefert Informationen darüber, wie Felder im Frontend verwendet werden, insbesondere von Extbase, dem Extension-Framework von TYPO3. Es gibt vor, wie Daten gerendert und von Erweiterungen und benutzerdefinierten TYPO3-Anwendungen abgerufen werden sollen.

Erweiterbarkeit

Die TCA ist durch TYPO3-Erweiterungen äußerst erweiterbar. Erweiterungen können neuen Felder zu vorhandenen Tabellen hinzufügen, völlig neue Tabellen erstellen und bestehende TCA-Konfigurationen ändern. Diese Erweiterbarkeit ermöglicht es Entwicklern, TYPO3 an spezifische Projektanforderungen anzupassen.

TCA: Code Beispiel

'rte_example' => [
    'exclude' => 1,
    'label' => 'rte_1 description',
    'description' => 'field description',
    'config' => [
        'type' => 'text',
        'enableRichtext' => true,
        'fieldControl' => [
            'fullScreenRichtext' => [
                'disabled' => false,
                ],
        ],
    ], 
],

Wie TCA funktioniert

Um zu verstehen, wie TCA in TYPO3 funktioniert, muss man seine Struktur und seine Anwendung verstehen:

Struktur

Die TCA folgt einer hierarchischen Struktur. Auf der obersten Ebene definiert sie Eigenschaften für jede Tabelle (z. B. pages, tt_content). Diese Eigenschaften sind in Abschnitte wie "ctrl" (für tabellenweite Steuerung), "interface" (Backend-Anzeigekonfiguration), "columns" (individuelle Feldkonfiguration), "types" (Formularlayout für die Bearbeitung) und "palettes" (Feldreihenfolge innerhalb von Paletten) gruppiert.

Eigenschaft Konfiguration

Jede Eigenschaft im TCA verfügt über spezifische Konfigurationen, die ihr Verhalten definieren. Diese Konfigurationen sind in Bereiche wie "Anzeige", "Proc" (Verarbeitung), "Datenbank" und "Suche" unterteilt. Anzeige-Eigenschaften beeinflussen die Backend-Formulare, Proc-Eigenschaften wirken sich auf die Datenverarbeitung aus, Datenbank-Eigenschaften beeinflussen die Datenbankstruktur, und Such-Eigenschaften sind mit der Backend-Suche verwandt.

Erweiterungen

TYPO3s Kern sowie zusätzliche Erweiterungen stellen TCA-Dateien in ihren Verzeichnissen "Configuration/TCA" bereit. Der Kern enthält Tabellen wie "pages" und "fe_users", während andere Erweiterungen neue Tabellen und Felder einführen können. Entwickler definieren die TCA für eine neue Tabelle in einem Verzeichnis "Configuration/TCA" der Erweiterung und folgen dabei einer spezifischen Namenskonvention.

Zusammenstellung

Wenn TYPO3 initialisiert wird, kompiliert es das endgültige TCA Array, indem es TCA-Dateien von verschiedenen Orten lädt. Das kompilierte TCA-Array wird dann für nachfolgende Anfragen zwischengespeichert. Dieses zwischengespeicherte Array ist als $GLOBALS['TCA'] verfügbar und wird in ganz TYPO3 verwendet, einschließlich Frontend-, Backend- und Befehlszeilen-Interface (CLI)-Anfragen.

Sie möchten sich nicht mit solchen technischen Details befassen? Lassen Sie uns Ihnen bei Ihrer Migration mit unseren Flexform to TCA Migration Services helfen.

Wichtige Informationen über TCA in TYPO3

Aspekt Beschreibung
Zweck $GLOBALS['TCA'] (Table Configuration Array) ist ein globaler Array in TYPO3, der verwendet wird, um Datenbanktabellen über SQL-Definitionen hinaus zu konfigurieren. Er spielt eine zentrale Rolle in der Architektur von TYPO3.
Kontrolle der Sichtbarkeit Tabellen, die nicht in $GLOBALS['TCA'] definiert sind, sind für das TYPO3-Backend "unsichtbar".
Umfang der Konfiguration Definiert die Struktur und das Verhalten von Datenbanktabellen, einschließlich Beziehungen, Feldanzeige, Validierung und Frontend-Nutzung.
Erweiterbarkeit Hochgradig erweiterbar durch Erweiterungen zum Hinzufügen von Feldern, Tabellen und Ändern von TCA-Einstellungen.
Vorinstallierte Erweiterungen Core-Erweiterungen wie "core" und "frontend" kommen mit vordefinierten TCA-Einstellungen für Tabellen wie pages, tt_content und mehr.
Speicherort der Datei TCA-Definitionen werden in Erweiterungsverzeichnissen unter Configuration/TCA/ als PHP-Dateien gespeichert.
Caching TCA is compiled on the first call, cached, and then quickly loaded from cache for subsequent requests.
Struktur Tabelleneinträge: Definieren Sie Tabellen nach Namen, z. B. $GLOBALS['TCA']['pages'].

Innerhalb von Tabellen: Konfigurieren Sie Tabellen mit Abschnitten wie "Strg", "Schnittstelle", "Spalten", "Typen" und "Paletten".
Sektionen 'ctrl': Allgemeine Tabelleneigenschaften, die sich auf die Anzeige und Verarbeitung auswirken.

'interface': Eigenschaften der Backend-Schnittstelle.

'columns': Konfiguration für jedes Tabellenfeld (Spalte).

 'types': Formularlayout für die Bearbeitung.

 'palettes': Feldreihenfolge in Paletten.
Eigenschafts bereiche Eigenschaften können Bereiche wie 'Anzeige', 'Verarbeitung', 'Datenbank', 'Suche' oder spezielle Bereiche haben, die ihre Auswirkungen auf die Anzeige, die Datenverarbeitung, die Datenbankstruktur, die Suchfunktion oder andere spezifische Effekte anzeigen.
Glossar Enthält Begriffe wie TCE (TYPO3 Core Engine), "Liste von" (kommagetrennte Liste), Feldname (Spaltenname), Datensatztyp (durch ein Feld im Datensatz festgelegt) und LLL-Verweis (lokalisierter String, der aus locallang-Dateien abgerufen wird).

 

Unterschied zwischen FlexForms und TCA (Table Configuration Array)

Sobald wir beide Konzepte individuell gelernt haben, hier eine kurze Übersicht über die wichtigsten Unterschiede zwischen FlexForms und TCA (Table Configuration Array) in TYPO3, die Ihnen bei der Konzeptklärung helfen werden:

Aspekt FlexForms TCA (Table Configuration Array)
Definition Methode XML-basierte Konfiguration innerhalb von Feldern PHP-basierte Konfiguration in TCA Arrays
Integration Es ist optional, wir können Inhaltselemente und Plugins konfigurieren Kernbestandteil von TYPO3, integriert in die Erstellung von Inhaltselementen und Plugins
Flexibilität Bietet Flexibilität bei der Anpassung von Inhaltselementen und Plugins Bietet einen strukturierten Ansatz mit vordefinierten Feldern und Datenstrukturen
Individuelle Konfiguration Die Konfiguration gilt für den spezifischen Inhaltsdatensatz, für den sie konfiguriert wurde. Die Konfiguration wird von allen Inhaltselementen desselben Typs gemeinsam genutzt.
Editor Steuerung Redakteure können FlexForms im TYPO3 Backend bearbeiten Die Konfiguration wird in der Regel von den Entwicklern vordefiniert
Konfigurations optionen Große Auswahl an Eingabefeldern, Auswahllisten, bedingten Einstellungen und mehr Begrenzte Anzahl von vordefinierten Feldern und Datentypen
Lagerung Die Konfigurationsdaten werden als XML-Struktur in einer Datenbankspalte gespeichert Die Konfigurationsdaten werden in den TYPO3-Datenbanktabellen gespeichert
Zugang zu den Einstellungen Die Einstellungen können über $this->settings in Extbase-Controllern, PHP-Funktionen und TypoScript abgerufen werden. Zugriff über vordefinierte TCA-Felder in TypoScript oder eigenen PHP-Code
Modifikation von PHP Kann mit der FlexFormTools-Klasse von TYPO3 programmatisch verändert werden Die Konfiguration ist in der Regel vordefiniert und wird nicht von PHP aus geändert.
Wichtigste Anwendungsfälle Anpassen des Verhaltens und der Darstellung von Inhaltselementen und Plugins Definition der Struktur und Eigenschaften von Inhaltselementen und Plugins
Version 13.0 Aktualisierung Das TCEforms-Tag wurde entfernt und wird in FlexForms nicht mehr ausgewertet Keine Auswirkungen; TCA bleibt unberührt
Leistung Bietet Flexibilität, kann aber einen gewissen Leistungs-Overhead haben Integriert in den TYPO3-Kern für optimierte Leistung und Effizienz
Künftige Kompatibilität Kann Anpassungen erfordern, wenn auf neuere TYPO3-Versionen aktualisiert wird. Teil des TYPO3-Kerns, der langfristige Kompatibilität und Unterstützung gewährleistet
Empfohlen für Individuell angepasste Inhaltslemente und Plugins, die es Redakteuren ermöglichen, Einstellungen fein abzustimmen. Definition von standardisierten Inhaltselementen und Plugins mit einem strukturierten Ansatz
Lernkurve Erfordert Verständnis für XML-basierte Konfiguration und FlexForm-Konzepte. Erfordert Vertrautheit mit der TCA Array Struktur und den Konfigurations optionen

 

Structured Content Initiative by TYPO3 Community

In addition to the FlexForms vs. TCA comparison, it's worth mentioning the Structured Content Initiative, which aims to improve TYPO3's native support for custom, semantically structured content element types. They have also launched Ext:TYPO3 CMS Content Blocks

The primary focus of this initiative is to prioritize user experience and flexibility, looking beyond the current limitations and technologies. The key objectives are:

Goals:

  • Improve the editor's experience by making content types more intuitive to work with.
  • Enable integrators to create semantically correct and easily reusable content types that are not tied to layouts, templates, or technologies like FlexForms.

Scope:

To address the complexity of structured content, the initiative has identified specific focus areas to expedite progress through separate working groups. Notably, the TYPO3 UX Initiative handles changes related to the editing interface UX. Our primary areas of focus are:

  • Content Blocks: Streamlining the creation and registration process for content blocks (content elements).
  • Dynamic Grid: Simplifying the creation of grids (rows and columns) in the page module without the need for nested content.

By considering these advancements alongside the FlexForms vs. TCA decision, TYPO3 developers can choose the best approach for their projects while staying informed about ongoing improvements in the TYPO3 ecosystem.

Schlussfolgerung

Sowohl FlexForms als auch TCA haben ihre Stärken und Anwendungsfälle, und die Wahl zwischen ihnen hängt von den spezifischen Anforderungen Ihres TYPO3-Projekts ab. FlexForms bieten mehr Flexibilität für Anpassungen und die Kontrolle durch Redakteure, während TCA einen strukturierten und leistungsoptimierten Ansatz für die Definition von Inhaltslementen und Plugins bietet.

Wenn Sie erwägen, von Flexform auf TCA umzusteigen, handelt es sich um einen strategischen Schritt, um Ihre TYPO3-Website im Einklang mit modernen Best Practices zu halten und sicherzustellen, dass sie an zukünftige TYPO3-Entwicklungen anpassbar bleibt. Der Migrationsprozess erfordert möglicherweise einige Anstrengungen, aber die Vorteile einer verbesserten Leistung und langfristigen Nachhaltigkeit machen ihn zu einer lohnenswerten Investition für TYPO3 Website Betreiber und Entwickler.

Your One-Stop Solutions for Custom TYPO3 Development

  • A Decade of TYPO3 Industry Experience
  • 350+ Successful TYPO3 Projects
  • 87% Repeat TYPO3 Customers
TYPO3 Service
service

Post a Comment

×
Captcha Code Kann das Bild nicht gelesen werden? Klicken Sie hier, um zu aktualisieren
  • user
    Katja Fassbinder 2024-06-25 um 4:29 pm

    This article is very informative! I had some confusion about Flexform and TCA, but your explanations clarified everything. Appreciate the detailed insights

  • user
    Steffen Foerster 2024-04-29 um 8:06 pm

    Thinking about migrating to TCA now. Seems like it'll offer more long-term benefits.

  • user
    Christine Lowev 2024-04-06 um 7:10 am

    Nice to see TYPO3 making things better for editors. Those new features sound useful!

  • user
    Kevin Frey 2024-04-01 um 6:26 pm

    I appreciate the examples provided for both FlexForms and TCA. Makes it easier to understand.

  • user
    Uta Meyer 2024-03-03 um 1:15 pm

    I've been hesitant about migrating from FlexForms to TCA, but after reading this article, I'm convinced of the benefits. The performance and long-term compatibility advantages make it a worthwhile transition

  • user
    Benjamin Kruger 2024-03-01 um 12:38 pm

    The distinction between FlexForms and TCA is well-explained here. It's reassuring to know that TYPO3 developers have options depending on their project requirements and future scalability needs.