Einer TYPO3 Extension Datenbank weitere Spalten hinzufügen

typo3-extension-ordnerMal angenommen man hat mit dem Kickstarter eine tolle Erweiterung erstellt, fröhlich begonnen zu entwickeln und dann festgestellt man braucht weitere Felder. Oder man hat eine fremde Extension schon soweit verbogen, dass man getrost auch noch die Datenbank erweitern könnte, dann braucht man eine ganze Menge Geduld, ein gutes Gedächnis oder die folgende Anleitung. Es ist relativ einfach neue Spalten zu einer Tabelle der TYPO3 Datenbank hinzuzufügen. Man muss gerade mal 4 Dateien bearbeiten.

Ein Artikel von Paul Lunow, erschienen 2009 auf Interaktionsdesigner.de.

Zuletzt überarbeitet am von : .

Die Dateien befinden sich natürlich alle im Verzeichnis der Extension. Auf gehts:

1. ext_tables.sql

Hier ist das pure Datenbankschema gespeichert. Mit pur meine ich die SQL Befehle. Angelegt wie als würde eine neue Datenbank erstellt werden. TYPO3 kann die Änderungen automatisch in UPDATE Befehle umwandeln.

2. ext_tables.php

Diese Datei beschreibt das verhalten der kompletten Datenbank im TYPO3 Backend. Im unteren Bereich gibt es das Array feInterface, hier muss das neue Feld hinzugefügt werden.

    "feInterface" => array (
        "fe_admin_fieldList" => "sys_language_uid, l18n_parent, l18n_diffsource, hidden, title, street, plz, plz_alt, city, tel, fax, asp_name, asp_mail",
    )

3. locallang_db.xml

Speichert die Namen der Felder für die Eingabe im Backend. Für jede Spalte muss ein Label definiert werden, am besten in jeder Sprache die angeboten wird, wenn mans eilig hat dann nur auf deutsch.

<label index="tx_kiwidbplz_data.plz_alt">Alternative zur PLZ</label>

Der letzte Teil vom Attribut index ist der neue Spaltenname.

4. tca.php

Das ist die aufwändigste Datei. Hier ist eine Anleitung für jede einzelne Spalte gespeichert. Am besten man sucht sich einen Eintrag von einer Spalte die das gleiche Format hat und ändert zwei Stellen:

        "plz_alt" => Array (
            "exclude" => 1,
            "label" => "LLL:EXT:kiwi_db_plz/locallang_db.xml:tx_kiwidbplz_data.plz_alt",
            "config" => Array (
                "type" => "input",
                "size" => "30",
            )
        ),

Zum einen den Schlüssel (“plz_alt” => Array…) des Eintrags und die Referenz zum Label (“label” => “LLL:EXT:kiwi_db_plz/locallang_db.xml:tx_kiwidbplz_data.plz_alt”). Diezweite Änderung findet sich ganz unten im Feld types. Die hier angegebene Reihenfolge wird im Backend befolgt.

    "types" => array (
        "0" => array("showitem" => "sys_language_uid;;;;1-1-1, l18n_parent, l18n_diffsource ... plz, plz_alt, city, tel, ...")
    )

(ein leicht gekürzter Auszug)

TYPO3 Backend

Sind diese Anpassungen getan, ins Backend von TYPO3 wechseln, den Extension Manager aufrufen und die angepasste Erweiterung anklicken. Auf der Erweiterungsseite weißt das Script jetzt auf eine nötigeAktualisierung der Datenbank hin. Diese durchführen, eventuell den Backend Cache löschen und fertig! Viel Spaß mit der neuen Spalte, in welcher Datenbank auch immer!


Deine Meinung

Sind wir einer Meinung? Sind noch Fragen offen geblieben?

Mehr zum Thema