Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Bevor wir die erste Zeile Code schreiben, müssen wir die Infrastruktur der Extension einrichten. Dazu zählen neben der Ordnerhierarchie auch die minimal nötigen Konfigurationsdateien. Den eindeutigen Bezeichner unserer Extension (Extension-Key) legen wir auf inventory, und damit legen wir zugleich den Namen der Extension auf Inventory fest.
Der Name einer Extension wird immer in UpperCamelCase (beginnend mit einem Großbuchstaben, dann Groß- und Kleinbuchstaben; kein Unterstrich) geschrieben, während der Extension-Key nur Kleinbuchstaben und Unterstriche enthalten darf (lower_underscore). Eine Übersicht über die Namenskonventionen finden Sie in Anhang A.
Extensions können in TYPO3 an verschiedenen Orten abgelegt werden. Lokal installierte Extensions sind der Regelfall. Diese befinden sich im Ordner typo3conf/ext/. Global installierte Extensions stehen allen Seiten zur Verfügung, die auf dieselbe Installation zurückgreifen. Sie werden in typo3/ext/ abgelegt. System-Extensions werden mit der TYPO3-Distribution ausgeliefert und befinden sich im Ordner typo3/sysext/. Extbase oder Fluid sind Beispiele für System-Extensions. Alle drei Pfade befinden sich unterhalb des Installationsverzeichnisses von TYPO3, in dem auch die Datei index.php liegt.
Wir legen zunächst im Verzeichnis für lokale Extensions typo3conf/ext/ den Ordner inventory an. Der Name dieses Ordners muss gleich dem Extension-Key und damit in Kleinbuchstaben und ggf. mit Unterstrichen geschrieben sein. Auf der obersten Ebene liegen die Ordner Classes und Resources. Der Ordner Classes enthält alle PHP-Klassen, mit Ausnahme von externen Bibliotheken, wie z.B. JavaScript-Bibliotheken. Der Ordner Resources enthält alle sonstigen Dateien, die noch von unserer Extension verarbeitet werden müssen (z.B. HTML-Templates) oder direkt an das Frontend ausgeliefert werden (z.B. Icons). Innerhalb des Ordners Classes befinden sich die Ordner Controller und Domain. Der Ordner Controller enthält in unserem Beispiel nur eine Klasse, die den gesamten Prozess der Listenerzeugung später steuern wird. Der Ordner Domain enthält wiederum die beiden Ordner Model und Repository. Daraus ergibt sich nun innerhalb des Extension-Ordners inventory/ die Ordnerstruktur, die Sie in Abbildung 4.1 sehen.
Damit die Extension von TYPO3 geladen werden kann, benötigen wir zwei Konfigurationsdateien. Diese werden in den Extension-Ordner inventory/ auf der obersten Ebene abgelegt. Sie können diese Dateien von einer existierenden Extension kopieren und anpassen. Später werden Sie diese durch den Kickstarter anlegen lassen.
Die Datei ext_emconf.php enthält die Meta-Informationen zur Extension, wie z.B. den Titel, eine Beschreibung, den Status, den Namen des Autors etc. Sie unterscheidet sich nicht von herkömmlichen Extensions. Allerdings empfiehlt es sich, die Abhängigkeit zu Extbase und Fluid (ggf. auch zu einer bestimmten Version) anzugeben.
<?php $EM_CONF[$_EXTKEY] = array( 'title' => 'Inventory List', 'description' => 'An extension to manage a stock.', 'category' => 'plugin', 'author' => 'Jochen Rau', 'author_company' => '', 'author_email' => '', 'dependencies' => 'extbase,fluid', 'state' => 'alpha', 'clearCacheOnLoad' => '1', 'version' => '0.0.0', 'constraints' => array( 'depends' => array( 'typo3' => '4.3.0-4.3.99', 'extbase' => '1.0.0-0.0.0', 'fluid' => '1.0.0-0.0.0', ) ) ); ?>
Die Datei ext_icon.gif enthält das Icon der Extension. Hierfür können Sie jede im GIF-Format gespeicherte Grafik verwenden. Sie sollte eine Breite von 18 Pixel und eine Höhe von 16 Pixel nicht überschreiten. Das Icon erscheint im Extension Manager und im Extension-Repository (TER).
Nachdem die grundlegende Struktur aufgebaut wurde, kann die Extension im Extension-Manager bereits angezeigt und installiert werden. Wir wenden uns aber zunächst unserer Domäne zu.