Glossar
TCA (Table Configuration Array)
Die Konfiguration, die festlegt, wie Datenbankfelder im TYPO3-Backend erscheinen und geprüft werden.
Wozu das TCA gut ist
Das Table Configuration Array beschreibt für jede Datenbanktabelle, wie TYPO3 damit im Backend umgeht. Es ist der Grund, warum ein neues Feld nicht nur in der Datenbank existiert, sondern auch als beschriftetes Eingabefeld an der richtigen Stelle erscheint.
Technisch ist es ein großes, verschachteltes PHP-Array. Das klingt sperriger, als es sich anfühlt: In der Praxis arbeitet man mit überschaubaren Ausschnitten für einzelne Felder.
Feldtypen
Das TCA kennt eine Reihe von Typen, die den größten Teil der Praxis abdecken: einzeilige und mehrzeilige Texte, Auswahlfelder mit festen oder aus der Datenbank gelesenen Werten, Datum und Zeit, Verweise auf Dateien, Beziehungen zu anderen Datensätzen und Prüfungen wie Pflichtfeld oder gültige E-Mail-Adresse.
Wer eine gute Redaktionsoberfläche will, verbringt hier mehr Zeit als anderswo. Ein passender Feldtyp mit klarer Beschriftung erspart später viele Rückfragen.
Zusammenhang mit Extbase
Bei Extbase-Extensions beschreibt das Modell die Daten aus Sicht des Codes, das TCA aus Sicht des Backends. Beide müssen zusammenpassen: Jede Eigenschaft im Modell braucht ein Feld in der Tabelle und in der Regel einen Eintrag im TCA.
Weicht das voneinander ab, sind die Fehler unangenehm zu finden, weil im Backend etwas fehlt, ohne dass irgendwo eine Meldung erscheint.
Wo das TCA im Projekt liegt
Für eine eigene Tabelle liegt die Konfiguration in Configuration/TCA/ unter dem Tabellennamen. Soll eine bestehende Tabelle nur ergänzt werden, etwa ein zusätzliches Feld an den Seiten oder an den Inhaltselementen, gehört das nach Configuration/TCA/Overrides/.
Die Trennung ist wichtig, weil TYPO3 beide Orte unterschiedlich behandelt. Wer eine fremde Tabelle vollständig neu definiert statt sie zu überschreiben, nimmt sich alles, was der Core und andere Extensions dort eingetragen haben.
TCA ist nicht das Datenbankschema
Ein häufiges Missverständnis: Das TCA legt keine Spalten an. Die Struktur der Tabelle steht in ext_tables.sql, das TCA beschreibt nur, wie TYPO3 mit den vorhandenen Spalten umgeht.
Fehlt die Spalte, aber das TCA ist da, zeigt das Backend ein Feld, dessen Inhalt nirgends landet. Fehlt umgekehrt das TCA, existiert die Spalte, ist aber im Backend unsichtbar. Beide Fälle sehen im ersten Moment nach einem Fehler an ganz anderer Stelle aus.
Types und Palettes
columns beschreibt die einzelnen Felder, types legt fest, welche davon in welcher Reihenfolge in einem Formular erscheinen. Deshalb sieht ein Text-Inhaltselement anders aus als ein Bild-Element, obwohl beide in derselben Tabelle liegen.
palettes fasst mehrere Felder zu einer Gruppe zusammen, die nebeneinander in einer Zeile steht. Das ist kein Schönheitsthema: Ein Formular mit dreißig untereinander gestapelten Feldern wird nicht gelesen, sondern durchgescrollt.
Mit columnsOverrides lässt sich ein Feld je Typ unterschiedlich konfigurieren, etwa als Pflichtfeld nur dort, wo es wirklich gebraucht wird.
Felder ein- und ausblenden
displayCond blendet ein Feld abhängig von einem anderen Wert ein oder aus. Wer eine Auswahl trifft, sieht danach nur die Felder, die zu dieser Auswahl gehören.
Sparsam eingesetzt ist das eines der wirksamsten Mittel für eine aufgeräumte Oberfläche. Übertrieben eingesetzt entsteht ein Formular, dessen Verhalten niemand mehr vorhersagt.
Warum Änderungen manchmal nicht ankommen
Das TCA wird zwischengespeichert. Wer eine Datei ändert und im Backend nichts sieht, hat in den meisten Fällen nur den Cache vor sich und keinen Fehler in der Konfiguration.
Bei Ansätzen wie Content Blocks oder Mask entsteht das TCA aus einer kompakteren Beschreibung. Es verschwindet dadurch nicht, es wird nur nicht mehr von Hand geschrieben.