-->

Dateistruktur einer TYPO3-Extension – Teil I

von Robert Steindl


Neben der inhaltlichen Struktur der Erweiterung ergibt sich je nach Art der Erweiterung auch eine bestimmte Verzeichnisstruktur. Das Hauptverzeichnis der Erweiterung wird dabei bestimmt durch die Art der Installation:

Art der Installation Verzeichnis
Lokal TYPO3conf/ext
Global TYPO3/ext
System TYPO3/sysext

Innerhalb dieser Verzeichnisse wird für die Erweiterung ein Ordner angelegt, dessen Name mit dem Extension Key identisch ist.

Jede Extension sollte so programmiert sein, dass sie an jedem der drei Orte installiert werden kann und von dort aus lauffähig ist. Wenn dies für eine Extension nicht möglich ist, lässt sich allerdings in der Konfigurationsdatei emconf.php der Erweiterung ein Installationsort vorschreiben.

Ist eine Erweiterung mehrfach installiert, beispielsweise global und lokal, so gilt die Reihenfolge lokal – global – System. Die lokale Installation hat also immer die höchste Priorität.

Die Verzeichnis- und Dateistruktur der Erweiterung selbst kann beliebig komplex sein, allerdings gibt es einige reservierte und einige zwingend erforderliche Dateien, die nachfolgend aufgelistet sind:

ext_emconf.php

Die Datei ext_emconf.php enthält die grundlegende Beschreibung der Extension. Dazu gehören Name und Beschreibung der Erweiterung ebenso wie der Status oder Abhängigkeiten von anderen Erweiterungen.

Die Datei enthält außerdem md5-Hashwerte aller Dateien, die zur Extension gehören (bzw. die ersten vier Zeichen des Hash-Werts). Damit kann der Extension Manager prüfen, ob Dateien verändert wurden.

Ist die Datei ext_emconf.php nicht vorhanden, so wird die Erweiterung vom Extension Manager nicht erkannt.

Beim Import von Erweiterungen aus dem TER (TYPO3 Extension Repository) wird die Datei vom Extension Manager automatisch angepasst.

ext_localconf.php

Diese Datei enthält Einträge für den Array $TYPO3_CONF_VARS, sie stellt also eine Erweiterung der Datei TYPO3conf/localconf.php dar. Sie muss nicht zwingend vorhanden sein.

TYPO3 lädt zunächst die Datei TYPO3conf/localconf.php. Dann werden aus den Variablen in dieser Datei die Konstanten für den Zugriff auf die Datenbank generiert. Erst anschließend werden die ext_localconf.php-Dateien der Extensions geladen.

Das bedeutet, dass die ext_localconf.php nahezu alle Optionen ändern kann, aber nicht die Datenbank-Einstellungen.

ext_tables.php

ext_tables.php erweitert die Einstellungen der Datei tables.php (zu finden im Verzeichnis t3lib/stddb).

Die Datei enthält Konfigurationsdaten für Tabellen, Module, Backend-Stile usw.

Für jede Tabelle der Extension findet sich hier ein Eintrag für den Array $TCA (Table Configuration Array). Dieser listet alle Felder der Tabelle auf und verweist für die genaue Konfiguration auf die externe Datei tca.php. Außerdem wird hier für die Tabelle ein Icon festgelegt, das im Backend für Einträge dieser Tabelle verwendet wird. Die genaue Struktur der beiden Dateien werden wir später beim Aufbau unserer Erweiterung erläutern.

Die Reihenfolge beim Laden von TYPO3 ist wie folgt:

Zunächst wird die Datei tables.php geladen, unmittelbar danach die ext_tables.php-Dateien aller aktiven Extensions. Die Reihenfolge wird dabei festgelegt durch den Array TYPO3_LOADED_EXT.

Zum Abschluss wird noch eine allgemeine extTables-Datei geladen. Ort und Name dieser Datei werden über die Variable $typo_db_extTableDef_script in der Datei TYPO3conf/localconf.php definiert.

So können die Konfigurationsdaten von Extensions nachträglich für eine spezielle Installation angepasst werden.

ext_tables.sql

Diese Datei enthält die SQL-Definition von Datenbank-Tabellen.

Der Inhalt dieser Datei wird von TYPO3 für den Check der Datenbankstruktur verwendet, beispielsweise wenn eine Erweiterung installiert wird.

ext_tables.sql entspricht formal einem Dump einer MySQL-Datenbank. Allerdings muss sie nicht notwendigerweise mit der tatsächlichen Struktur einer Tabelle übereinstimmen.

Wird beispielsweise eine bestehende Tabelle erweitert, so enthält die SQL-Datei der Extension eine formal vollständige CREATE TABLE-Anweisung. Als Felder werden allerdings nur die zusätzlichen Einträge für die Erweiterung aufgeführt.

#

# Zusätzliches Feld in der Tabelle

# 'fe_users'

#

CREATE TABLE fe_users (
 
tx_myextcustomer_status tinytext
 
);

Der Extension Manager bzw. das Installationstool von TYPO3 werten die Datei aus und setzen die Daten passend um.

Dabei werden auch die Größen von Feldern angepasst, wenn Sie etwa UTF-8 als Zeichensatz verwenden und bei der Installation die Einstellung für [SYS][multiplyDBfieldSize] auf einen Wert größer als 1 gesetzt haben.

ext_tables_static+adt.sql

Diese Datei nimmt Daten für statische Tabellen und Daten auf, die eine Erweiterung benutzt (beispielswiese eine Liste von Steuerzonen).

Die Datei kann mithilfe von mysqldump aus einer fertigen Tabelle erzeugt werden:

<em>mysqldump --user=[User] --password=[Passwort] [Datenbank] [Tabelle] --add-drop-table &gt; ./ext_tables_static.sql</em>

Der Extension Manager bietet ebenfalls eine Funktion, um die Tabellen einer Erweiterung als Dump anzuzeigen. Diesen Dump können Sie anschließend in eine Datei kopieren.

Anmerkung: Auch die Struktur von statischen Tabellen muss in der Datei ext_tables.sql enthalten sein, sonst erkennt sie der Extension Manager als überzählig.

ext_conf_template.txt

Diese Datei enthält Typoscript-Code für die Konfiguration der Erweiterung. Über den Extension Manager lassen sich diese Einstellungen anpassen.

Das Ergebnis der Einstellung wird in localconf.php als serialisierter Array in der Variablen $TYPO3_CONF_VARS["EXT"]["extConf"][extension_key] gespeichert.

Dieser Text ist dem Buch “Extensions für TYPO3” von Robert Steindl entnommen, das im Franzis-Verlag erschienen ist. Das Buch ist hier direkt bestellbar.

Social Bookmarks: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TwitThis
  • Facebook
  • Digg
  • del.icio.us
  • MisterWong
  • Google Bookmarks
  • Technorati
  • Y!GG

Post to Twitter

Artikel bewerten

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Weitere Artikel

  • No Related Post

Kommentar schreiben