Dmitry Dulepov TYP03-Extensions entwickeln Der Entwicklerleitfaden für Extensions mitdertyp03-api YV ADDISOIM-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam
Der Autor 13 Der Fachgutachter 15 Vorwort 17 1 Über die TYPO3-API 21 l.i Überblick über die TYPO3-API 21 1.2 PHP-Klassen und -Dateien 22 1.2.1 t3lib_ 23 1.2.2 tslib_ 23 1.2.3 tx_ 24 ux - 1.2.4 1.2.5 user_ 25 1.3 Datenspeicherung in TYPO3 25 1.3.1 Die allgemeine TYPO3-API 26 1.3.2 Die Datenbank-API 27 1.3.3 Extension-Verwaltung 31 1.3.4 Helferfunktionen (t3lib_div) 32 1.3.5 Sprachunterstützung 39 1.3.6 Referenzindex 41 1.3.7 Hooks 42 1.4 Backend-API 42 1.4.1 TCEforms 42 1.4.2 TCEmain 43 1.5 Frontend-API 47 1.5.1 TSFE 47 1.5.2 Inhaltsobjekte 49 1.5.3 Die Plugin-API 49 1.6 Zusammenfassung 50 2 Aufbau von TYPO3- Extensions 51 2.1 Kategorien von ТУРОз-Extensions 51 2.1.1 Frontend 52 2.1.2 Frontend-Plugins 52 2.1.3 Backend 52 2.1.4 Backend-Module 53 2 4
2.1.5 Services 53 2.1.6 Examples 53 2.1.7 Templates 53 2.1.8 Documentation 53 2.1.9 Miscellaneous 53 2.2 Dateien in Extensions 54 2.2.1 Allgemeine Dateien 54 2.2.2 Dateien für Frontend-Plugins 69 2.2.3 Das Backend-Modul und seine Dateien 70 2.2.4 Dateien für Modulfunktionen 71 2.2.5 Dokumentationsdateien 72 2.3 Zusammenfassung 73 3 Extensions planen 75 3.1 Planung ist wichtig 75 3.2 Wie wird geplant? 76 3.2.1 Anforderungen sammeln 76 3.2.2 Die Implementierung planen 77 3.2.3 Die Dokumentation planen 78 3.3 Planung für TYPO3 78 3.3.1 Extension Keys 78 3.3.2 Die Datenbankstruktur 79 3.4 Die Planung von Extensions 83 3.4.1 Anforderungen 83 3.4.2 Der Extension Key 84 3.4.3 Frontend-Plugins 85 3.4.4 Das Backend-Modul 85 3.4.5 Weitere Klassen 86 3.4.6 Die Datenbankstruktur der Extension 86 3.4.7 Dokumentation 88 3.5 Zusammenfassung 88 4 Extensions generieren 89 4.1 Warum generieren? 89 4.2 Die Generierung vorbereiten 89 4.3 Die Schritte der Generierung 90 4.3.1 Einen Extension Key eingeben 90 4.3.2 Informationen über die Extension eingeben 91 4.3.3 Sprachen einrichten 92
4.3.4 Neue Datenbanktabellen erstellen 93 4.3.5 Vorhandene Tabellen erweitern 102 4.3.6 Frontend-Plugins erstellen 103 4.3.7 Backend-Module erstellen 106 4.3.8 Integration in bestehende Module 106 4.3.9 Kontextmenüeinträge hinzufügen 107 4.3.10 Services erstellen 107 4.3.11 Statischer TypoScript-Code 107 4.3.12 TSConfig hinzufügen 109 4.3.13 Die Extension generieren 109 4.4 Extensions anpassen 110 4.4.1 Aufräumen 110 4.4.2 Felder ändern 111 4.4.3 Tabellen verbergen 111 4.5 Zusammenfassung 111 5 Frontend-Plugins unter der Lupe 113 5.1 Grundlagen von Frontend-Plugins 113 5.1.1 Das Prinzip 113 5.1.2 Plugin-Konfiguration 115 5.2 Templates 120 5.3 Lokalisierung 122 5.3.1 Die Lokalisierung vorsehen 123 5.3.2 Strings lokalisieren 123 5.3.3 Lokalisierte Einträge abrufen 124 5.3.4 Zeichensätze 124 5.4 Caching 125 5.4.1 Caching in TYPO3 126 5.4.2 Gecachte und nicht gecachte Ausgaben 126 5.4.3 chash 127 5.4.4 Zwei Dinge, die Sie vermeiden sollten 128 5.4.5 Für Fortgeschrittene: USERJNT in USER einbetten 129 5.5 Zusammenfassung 129 6 Frontend-Plugins programmieren 131 6.1 Generierte Dateien überprüfen und aktualisieren 131 6.1.1 Dateien für das Frontend-Plugin 131 6.1.2 Weitere verwandte Dateien 134 6.1.3 Nicht überprüfte Dateien 136 9
6.2 Die Extension aufräumen 136 6.3 Das Plugin programmieren 137 6.3.1 Allgemeiner Arbeitsablauf 137 6.3.2 Dateien hinzufügen 137 6.3.3 Funktionen definieren 139 6.3.4 Eine Extension initialisieren 140 6.3.5 Die Flexform-Datenquelle ändern 143 6.3.6 Aufrufe senden 145 6.3.7 Templates verwenden 146 6.3.8 Eine Einzelansicht erstellen 149 6.3.9 Eine Listenansicht erstellen 154 6.3.10 Eine Suchfunktion erstellen 163 6.3.11 Hooks hinzufügen 171 6.3.12 Was lässt sich optimieren? 174 6.4 Zusammenfassung 174 7 Backend-Module programmieren 175 7.1 Ein Backend-Modul planen 175 7.1.1 Funktionalität eines Backend-Moduls 175 7.1.2 Frontend-Klassen 176 7.1.3 Datenbankstrukturen 176 7.2 Die Datenbank anpassen 177 7.2.1 ext_tables.sql 177 7.2.2 ext_tables.php 178 7.2.3 tca.php 180 7.3 Einen Frontend-Hook implementieren 186 7.4 Grundlagen von Backend-Modulen 191 7.4.1 Was ist ein Backend-Modul? 191 7.4.2 Modulfunktionen 191 7.4.3 Dateien des Backend-Moduls 192 7.4.4 Die Backend-API 193 7.5 Ein Backend-Modul implementieren 196 7.5.1 Dateien und Klassen 196 7.5.2 Ein Hinweis zu Backend-HTML 197 7.5.3 Die Hauptklasse implementieren 197 7.5.4 Die Liste der letzten Anmeldungen implementieren 198 7.5.5 Die Monatsansicht implementieren 201 10
7.5.6 Eine Liste der aktiven Benutzer implementieren 203 7.5.7 Seitenstatistiken implementieren 206 7.6 Zusammenfassung 209 8 Extensions abschließen 211 8.1 Überblick 211 8.2 Codedateien aktualisieren 211 8.2.1 Den Code überprüfen 211 8.2.2 Eleganterer Code mit extdeveval 213 8.2.3 Skriptgesteuerte Dokumentation 213 8.2.4 Einen Funktionsindex hinzufügen 214 8.2.5 Den Code neu formatieren 215 8.3 Dokumentation (Extension-Handbuch) schreiben 215 8.3.1 Dokumentationsvorlagen 215 8.3.2 Die Struktur der Vorlage 217 8.3.3 Stile in der Vorlage 217 8.3.4 Bilder in der Dokumentation 218 8.3.5 Die Dokumentation schreiben 218 8.3.6 Die Dokumentation verfügbar machen 219 8.4 Extensions zum TER hochladen 220 8.5 Zusammenfassung 221 Stichwortverzeichnis 223 11