
TYPO3-Extensions
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Persons
Content
2 - Vorwort [Seite 18]
3 - Teil I Klassische Extensionprogrammierung [Seite 20]
3.1 - 1 Grundlagen [Seite 22]
3.1.1 - 1.1 Aufbau und Struktur von TYPO3 [Seite 22]
3.1.2 - 1.2 Aufbau einer Extension [Seite 25]
3.1.3 - 1.3 Arten und Einteilung von Extensions [Seite 26]
3.1.4 - 1.4 Der Extension-Key [Seite 27]
3.1.5 - 1.5 TYPO3 Coding Guidelines [Seite 28]
3.1.5.1 - 1.5.1 Namespace [Seite 29]
3.1.5.2 - 1.5.2 PHP-Regeln [Seite 30]
3.1.5.3 - 1.5.3 Dateistruktur [Seite 31]
3.1.5.4 - 1.5.4 PHP-Syntax [Seite 34]
3.1.5.5 - 1.5.5 phpDoc2 [Seite 40]
3.1.5.6 - 1.5.6 Changelog [Seite 41]
3.2 - 2 Eine Extension planen undentwickeln [Seite 42]
3.2.1 - 2.1 Extensions planen [Seite 42]
3.2.1.1 - 2.1.1 Wir planen eine Blog-Extension [Seite 43]
3.2.2 - 2.2 Der Kickstarter [Seite 45]
3.2.2.1 - 2.2.1 Die Datenbank [Seite 47]
3.2.2.2 - 2.2.2 Datenbanktabellen und Formulare - eine Erklärung [Seite 53]
3.2.2.3 - 2.2.3 Extend existing Tables [Seite 55]
3.2.2.4 - 2.2.4 Frontend-Plug-ins [Seite 56]
3.2.2.5 - 2.2.5 Backend-Module [Seite 59]
3.2.2.6 - 2.2.6 Integrate in existing Modules [Seite 60]
3.2.2.7 - 2.2.7 Clickmenu items [Seite 60]
3.2.2.8 - 2.2.8 Services [Seite 61]
3.2.2.9 - 2.2.9 Static TypoScript code [Seite 62]
3.2.2.10 - 2.2.10 TSconfig [Seite 62]
3.2.2.11 - 2.2.11 Die Extension erstellen [Seite 63]
3.2.3 - 2.3 Extension-Konfiguration mit ext_emconf.php [Seite 64]
3.2.4 - 2.4 Die weiteren Dateien der Extension [Seite 69]
3.2.4.1 - 2.4.1 Verzeichnis doc [Seite 69]
3.2.4.2 - 2.4.2 Verzeichnis mod# [Seite 69]
3.2.4.2.1 - 2.4.2.1 Datei mod#/conf.php [Seite 69]
3.2.4.2.2 - 2.4.2.2 Datei mod#/index.php [Seite 70]
3.2.4.2.3 - 2.4.2.3 Datei mod#/locallang.xml [Seite 70]
3.2.4.2.4 - 2.4.2.4 Datei mod#/locallang_mod.xml [Seite 70]
3.2.4.3 - 2.4.3 Verzeichnis modfunc# [Seite 70]
3.2.4.3.1 - 2.4.3.1 Datei modfunc#/class.tx_extkey_modfunc1.php [Seite 70]
3.2.4.4 - 2.4.4 Verzeichnis pi# [Seite 71]
3.2.4.4.1 - 2.4.4.1 Datei pi#/class.tx_extkey_pi#.php [Seite 71]
3.2.4.4.2 - 2.4.4.2 Datei pi#/class.tx_extkey_pi#_wizicon.php [Seite 71]
3.2.4.4.3 - 2.4.4.3 Datei pi#/ce_wiz.gif [Seite 71]
3.2.4.4.4 - 2.4.4.4 Datei pi#/clear.gif [Seite 71]
3.2.4.4.5 - 2.4.4.5 Datei pi#/static/setup.txt [Seite 71]
3.2.4.5 - 2.4.5 Verzeichnis Static [Seite 71]
3.2.4.6 - 2.4.6 Datei Changelog [Seite 72]
3.2.4.7 - 2.4.7 Datei README.txt [Seite 72]
3.2.4.8 - 2.4.8 Datei ext_icon.gif [Seite 72]
3.2.4.9 - 2.4.9 Datei ext_localconf.php [Seite 72]
3.2.4.10 - 2.4.10 Datei ext_tables.php [Seite 72]
3.2.4.11 - 2.4.11 Datei ext_tables.sql [Seite 73]
3.2.4.12 - 2.4.12 Datei ext_tables_static+adt.sql [Seite 74]
3.2.4.13 - 2.4.13 Dateien Icon_tx_extkey_tabellenname.gif [Seite 75]
3.2.4.14 - 2.4.14 Datei locallang.xml [Seite 75]
3.2.4.15 - 2.4.15 Datei locallang_db.xml [Seite 75]
3.2.4.16 - 2.4.16 Datei tca.php [Seite 75]
3.2.4.16.1 - 2.4.16.1 Checkboxen [Seite 76]
3.2.4.16.2 - 2.4.16.2 Erweiterte Input-Felder [Seite 77]
3.2.4.16.3 - 2.4.16.3 Validierung mit eval [Seite 77]
3.2.4.16.4 - 2.4.16.4 Benutzerdefinierte Validierung [Seite 79]
3.2.4.16.5 - 2.4.16.5 Bildupload-Feld [Seite 79]
3.2.4.16.6 - 2.4.16.6 Textfelder mit RTE [Seite 80]
3.2.4.16.7 - 2.4.16.7 M-M-Relationen [Seite 81]
3.3 - 3 Backend-Module erstellen [Seite 84]
3.3.1 - 3.1 Module konfigurieren und im Hauptmenü anordnen [Seite 84]
3.3.2 - 3.2 Einen eigenen Navigationsbaum erstellen [Seite 88]
3.3.3 - 3.3 Backend-Modul erstellen [Seite 94]
3.3.3.1 - 3.3.1 Das Modul initialisieren [Seite 94]
3.3.3.2 - 3.3.2 Den Modulinhalt aufbauen [Seite 98]
3.3.3.3 - 3.3.3 Extension-Konfiguration über ext_conf_template.txt [Seite 99]
3.3.3.4 - 3.3.4 Backend-Formulare aufrufen [Seite 101]
3.3.3.5 - 3.3.5 Eine Datensatzliste mit Bearbeitungsfunktionen erstellen [Seite 103]
3.3.3.5.1 - 3.3.5.1 Einen Pagebrowser hinzufügen [Seite 106]
3.3.3.6 - 3.3.6 Aufgabe: Module für Kommentare, Blog und Blogroll [Seite 109]
3.3.3.6.1 - 3.3.6.1 Tipps [Seite 109]
3.3.3.6.2 - 3.3.6.2 Zusatzaufgabe [Seite 110]
3.3.4 - 3.4 Backend User Object - $BE_USER [Seite 110]
3.3.5 - 3.5 Das Systemlog [Seite 111]
3.4 - 4 Frontend-Plug-ins [Seite 114]
3.4.1 - 4.1 Das Frontend-Plug-in im Überblick [Seite 114]
3.4.2 - 4.2 Feldinhalte für die Ausgabe aufbereiten [Seite 122]
3.4.2.1 - 4.2.1 Das Bild für Teaser Image [Seite 123]
3.4.2.2 - 4.2.2 Ausgabe des Haupttextes in der Listenansicht, wennerwünscht [Seite 124]
3.4.2.3 - 4.2.3 Haupttext mit RTE formatieren [Seite 124]
3.4.2.4 - 4.2.4 Haupttext statt Teasertext anzeigen, falls dieser nichtverfügbar ist [Seite 125]
3.4.2.5 - 4.2.5 Verlinken des Autorennamens mit der Mail-Adresse desAutors [Seite 125]
3.4.2.6 - 4.2.6 Kategorien als Namen anzeigen und verlinken (Relationen) [Seite 126]
3.4.3 - 4.3 HTML-Templates für das Plug-in [Seite 128]
3.4.4 - 4.4 Die Kommentarfunktion mit AJAX und eID [Seite 133]
3.4.4.1 - 4.4.1 Ausgabe vorhandener Kommentare [Seite 134]
3.4.4.2 - 4.4.2 Das Kommentarformular hinzufügen [Seite 137]
3.4.5 - 4.5 Was sind Hooks? [Seite 142]
3.4.6 - 4.6 Flexforms [Seite 144]
3.4.6.1 - 4.6.1 Erzeugen der Flexform [Seite 145]
3.4.7 - 4.7 Das Plug-in pi2 [Seite 151]
3.5 - 5 Dokumentation und Abschluß [Seite 152]
3.5.1 - 5.1 Code dokumentieren mit extdeveval [Seite 152]
3.5.2 - 5.2 Extension-Dokumentation schreiben [Seite 153]
3.5.2.1 - 5.2.1 Die Vorlage [Seite 154]
3.5.2.2 - 5.2.2 Der Aufbau der Dokumentation [Seite 154]
3.5.2.3 - 5.2.3 Vorlagenstile [Seite 155]
3.5.2.4 - 5.2.4 Die Dokumentation verfassen [Seite 155]
3.5.3 - 5.3 Upload ins TER [Seite 156]
4 - Teil II Funktionsreferenz zur klassischenExtensionprogrammierung [Seite 158]
4.1 - 6 Datenbank [Seite 160]
4.1.1 - 6.1 $GLOBALS['TYPO3_DB'] [Seite 160]
4.1.1.1 - 6.1.1 exec_SELECTquery [Seite 160]
4.1.1.2 - 6.1.2 exec_SELECT_queryArray [Seite 160]
4.1.1.3 - 6.1.3 exec_SELECTgetRows [Seite 161]
4.1.1.4 - 6.1.4 exec_SELECT_mm_query [Seite 161]
4.1.1.5 - 6.1.5 exec_INSERTquery [Seite 162]
4.1.1.6 - 6.1.6 exec_UPDATEquery [Seite 162]
4.1.1.7 - 6.1.7 exec_DELETEquery [Seite 162]
4.1.1.8 - 6.1.8 sql_fetch_assoc [Seite 162]
4.1.1.9 - 6.1.9 sql_fetch_row [Seite 163]
4.1.1.10 - 6.1.10 searchQuery [Seite 163]
4.1.1.11 - 6.1.11 listQuery [Seite 163]
4.1.1.12 - 6.1.12 splitGroupOrderLimit [Seite 164]
4.1.1.13 - 6.1.13 quoteStr [Seite 164]
4.1.1.14 - 6.1.14 fullQuoteStr [Seite 164]
4.1.1.15 - 6.1.15 fullQuoteArray [Seite 165]
4.1.1.16 - 6.1.16 escapeStrForLike [Seite 165]
4.1.1.17 - 6.1.17 cleanIntArray [Seite 166]
4.1.1.18 - 6.1.18 cleanIntList [Seite 166]
4.1.1.19 - 6.1.19 debug_lastBuiltQuery [Seite 166]
4.1.2 - 6.2 tslib_pibase [Seite 167]
4.1.2.1 - 6.2.1 pi_exec_query [Seite 167]
4.1.2.2 - 6.2.2 pi_getPidList [Seite 168]
4.1.2.3 - 6.2.3 pi_getRecord [Seite 169]
4.1.2.4 - 6.2.4 pi_prependFieldsWithTable [Seite 169]
4.1.3 - 6.3 cObj [Seite 169]
4.1.3.1 - 6.3.1 DBgetDelete [Seite 169]
4.1.3.2 - 6.3.2 DBgetInsert [Seite 170]
4.1.3.3 - 6.3.3 DBgetUpdate [Seite 171]
4.1.3.4 - 6.3.4 enableFields [Seite 172]
4.2 - 7 Dateisystem [Seite 174]
4.2.1 - 7.1 t3lib_div [Seite 174]
4.2.1.1 - 7.1.1 dirname [Seite 174]
4.2.1.2 - 7.1.2 fixWindowsFilePath [Seite 174]
4.2.1.3 - 7.1.3 formatSize [Seite 175]
4.2.1.4 - 7.1.4 get_dirs [Seite 175]
4.2.1.5 - 7.1.5 getAllFilesAndFoldersInPath [Seite 176]
4.2.1.6 - 7.1.6 getFileAbsFileName [Seite 177]
4.2.1.7 - 7.1.7 getFilesInDir [Seite 177]
4.2.1.8 - 7.1.8 getURL [Seite 178]
4.2.1.9 - 7.1.9 isAbsPath [Seite 178]
4.2.1.10 - 7.1.10 isAllowedAbsPath [Seite 178]
4.2.1.11 - 7.1.11 mkdir [Seite 179]
4.2.1.12 - 7.1.12 mkdir_deep [Seite 179]
4.2.1.13 - 7.1.13 removePrefixPathFromList [Seite 179]
4.2.1.14 - 7.1.14 resolveBackPath [Seite 180]
4.2.1.15 - 7.1.15 rmdir [Seite 180]
4.2.1.16 - 7.1.16 split_fileref [Seite 181]
4.2.1.17 - 7.1.17 tempnam [Seite 181]
4.2.1.18 - 7.1.18 unlink_tempfile [Seite 181]
4.2.1.19 - 7.1.19 upload_copy_move [Seite 181]
4.2.1.20 - 7.1.20 upload_to_tempfile [Seite 182]
4.2.1.21 - 7.1.21 verifyFilenameAgainstDenyPattern [Seite 182]
4.2.1.22 - 7.1.22 writeFile [Seite 183]
4.2.1.23 - 7.1.23 writeFileToTypo3tempDir [Seite 183]
4.3 - 8 Strings, Arrays undUmgebungsvariablen [Seite 184]
4.3.1 - 8.1 Allgemeine Funktionen [Seite 184]
4.3.1.1 - 8.1.1 _GET [Seite 184]
4.3.1.2 - 8.1.2 _GETset [Seite 184]
4.3.1.3 - 8.1.3 _GP [Seite 185]
4.3.1.4 - 8.1.4 _POST [Seite 185]
4.3.1.5 - 8.1.5 callUserFunction [Seite 185]
4.3.1.6 - 8.1.6 clientInfo [Seite 186]
4.3.1.7 - 8.1.7 compat_version [Seite 186]
4.3.1.8 - 8.1.8 compileSelectedGetVarsFromArray [Seite 187]
4.3.1.9 - 8.1.9 getHostname [Seite 187]
4.3.1.10 - 8.1.10 getIndpEnv [Seite 187]
4.3.1.11 - 8.1.11 getThisUrl [Seite 187]
4.3.1.12 - 8.1.12 linkThisScript [Seite 188]
4.3.1.13 - 8.1.13 linkThisUrl [Seite 188]
4.3.1.14 - 8.1.14 locationHeaderUrl [Seite 188]
4.3.1.15 - 8.1.15 makeInstance [Seite 189]
4.3.1.16 - 8.1.16 makeInstanceService [Seite 189]
4.3.1.17 - 8.1.17 rmFromList [Seite 189]
4.3.1.18 - 8.1.18 sysLog [Seite 190]
4.3.2 - 8.2 String-Funktionen [Seite 190]
4.3.2.1 - 8.2.1 calcParenthesis [Seite 190]
4.3.2.2 - 8.2.2 cmpFQDN [Seite 190]
4.3.2.3 - 8.2.3 cmpIP [Seite 191]
4.3.2.4 - 8.2.4 convUmlauts [Seite 191]
4.3.2.5 - 8.2.5 csvValues [Seite 191]
4.3.2.6 - 8.2.6 deHSCentities [Seite 192]
4.3.2.7 - 8.2.7 expandList [Seite 192]
4.3.2.8 - 8.2.8 fixed_lgd [Seite 192]
4.3.2.9 - 8.2.9 fixed_lgd_pre [Seite 193]
4.3.2.10 - 8.2.10 formatForTextarea [Seite 193]
4.3.2.11 - 8.2.11 generateRandomBytes [Seite 193]
4.3.2.12 - 8.2.12 get_tag_attributes [Seite 194]
4.3.2.13 - 8.2.13 htmlspecialchars_decode [Seite 194]
4.3.2.14 - 8.2.14 implodeArrayForUrl [Seite 194]
4.3.2.15 - 8.2.15 implodeAttributes [Seite 195]
4.3.2.16 - 8.2.16 inList [Seite 195]
4.3.2.17 - 8.2.17 int_from_ver [Seite 196]
4.3.2.18 - 8.2.18 intInRange [Seite 196]
4.3.2.19 - 8.2.19 intval_positive [Seite 196]
4.3.2.20 - 8.2.20 isFirstPartOfStr [Seite 197]
4.3.2.21 - 8.2.21 md5int [Seite 197]
4.3.2.22 - 8.2.22 milliseconds [Seite 198]
4.3.2.23 - 8.2.23 modifyHTMLColor [Seite 198]
4.3.2.24 - 8.2.24 modifyHTMLColorAll [Seite 198]
4.3.2.25 - 8.2.25 normalizeIPv6 [Seite 199]
4.3.2.26 - 8.2.26 removeXSS [Seite 199]
4.3.2.27 - 8.2.27 revExplode [Seite 199]
4.3.2.28 - 8.2.28 rm_endcomma [Seite 200]
4.3.2.29 - 8.2.29 shortMD5 [Seite 200]
4.3.2.30 - 8.2.30 split_tag_attributes [Seite 200]
4.3.2.31 - 8.2.31 splitCalc [Seite 201]
4.3.2.32 - 8.2.32 strtolower [Seite 201]
4.3.2.33 - 8.2.33 strtoupper [Seite 202]
4.3.2.34 - 8.2.34 substUrlsInPlainText [Seite 202]
4.3.2.35 - 8.2.35 testInt [Seite 203]
4.3.2.36 - 8.2.36 trimExplode [Seite 203]
4.3.2.37 - 8.2.37 uniqueList [Seite 204]
4.3.2.38 - 8.2.38 validEmail [Seite 204]
4.3.2.39 - 8.2.39 validIP [Seite 204]
4.3.2.40 - 8.2.40 validIPv4 [Seite 205]
4.3.2.41 - 8.2.41 validIPv6 [Seite 205]
4.3.3 - 8.3 Array-Funktionen [Seite 205]
4.3.3.1 - 8.3.1 addSlashesOnArray [Seite 205]
4.3.3.2 - 8.3.2 array_merge [Seite 206]
4.3.3.3 - 8.3.3 array_merge_recursive_overrule [Seite 206]
4.3.3.4 - 8.3.4 array2json [Seite 207]
4.3.3.5 - 8.3.5 array2xml [Seite 207]
4.3.3.6 - 8.3.6 arrayToLogString [Seite 208]
4.3.3.7 - 8.3.7 explodeUrl2Array [Seite 209]
4.3.3.8 - 8.3.8 inArray [Seite 209]
4.3.3.9 - 8.3.9 print_array [Seite 209]
4.3.3.10 - 8.3.10 removeArrayEntryByValue [Seite 210]
4.3.3.11 - 8.3.11 slashArray [Seite 210]
4.3.3.12 - 8.3.12 view_array [Seite 211]
4.3.3.13 - 8.3.13 xml2array [Seite 211]
4.3.3.14 - 8.3.14 xml2tree [Seite 212]
4.3.3.15 - 8.3.15 xmlGetHeaderAttribs [Seite 213]
4.3.4 - 8.4 String-Funktionen in Frontend-Plug-ins [Seite 214]
4.3.4.1 - 8.4.1 calcAge [Seite 214]
4.3.4.2 - 8.4.2 checkEmail [Seite 214]
4.3.4.3 - 8.4.3 codeString [Seite 214]
4.3.4.4 - 8.4.4 encryptEmail [Seite 215]
4.3.4.5 - 8.4.5 HTMLcaseshift [Seite 215]
4.3.4.6 - 8.4.6 keywords [Seite 215]
4.3.4.7 - 8.4.7 linebreaks [Seite 216]
4.3.4.8 - 8.4.8 processParams [Seite 216]
4.3.4.9 - 8.4.9 uniqueHash [Seite 217]
4.3.4.10 - 8.4.10 URLqMark [Seite 217]
4.4 - 9 Bilder [Seite 218]
4.4.1 - 9.1 Einbinden [Seite 218]
4.4.2 - 9.2 Bearbeiten [Seite 219]
4.4.2.1 - 9.2.1 Bild umrechnen (fürs Web optimieren) [Seite 219]
4.4.2.2 - 9.2.2 Abmessungen ändern [Seite 220]
4.4.2.3 - 9.2.3 Zuschneiden [Seite 220]
4.4.2.4 - 9.2.4 Graustufen [Seite 221]
4.4.3 - 9.3 Erzeugen [Seite 222]
4.4.3.1 - 9.3.1 Bild in bestehendes Bild einfügen [Seite 222]
4.4.3.2 - 9.3.2 Text erzeugen [Seite 223]
4.5 - 10 AJAX im Frontend [Seite 224]
4.5.1 - 10.1 eID [Seite 224]
4.5.1.1 - 10.1.1 Konfiguration [Seite 224]
4.5.1.2 - 10.1.2 Basisdatei [Seite 225]
4.5.2 - 10.2 Zusammenspiel AJAX & eID [Seite 225]
4.5.2.1 - 10.2.1 Aufbau der XML-Response [Seite 225]
4.5.2.2 - 10.2.2 AJAX-Request und Verarbeitung [Seite 226]
4.6 - 11 Frontend-Plug-ins [Seite 228]
4.6.1 - 11.1 Cache [Seite 228]
4.6.1.1 - 11.1.1 cacheExpires [Seite 228]
4.6.1.2 - 11.1.2 clearPageCacheContent [Seite 228]
4.6.1.3 - 11.1.3 clearPageCacheContent_pidList [Seite 228]
4.6.1.4 - 11.1.4 get_cache_timeout [Seite 229]
4.6.1.5 - 11.1.5 set_cache_timeout_default [Seite 229]
4.6.1.6 - 11.1.6 set_no_cache [Seite 229]
4.6.2 - 11.2 Content-Elemente [Seite 230]
4.6.2.1 - 11.2.1 cImage [Seite 230]
4.6.2.2 - 11.2.2 cleanFormName [Seite 230]
4.6.2.3 - 11.2.3 cObjGet [Seite 230]
4.6.2.4 - 11.2.4 cObjGetSingle [Seite 231]
4.6.2.5 - 11.2.5 currentPageUrl [Seite 231]
4.6.2.6 - 11.2.6 fileResource [Seite 232]
4.6.2.7 - 11.2.7 getImgResource [Seite 232]
4.6.2.8 - 11.2.8 getSlidePids [Seite 232]
4.6.2.9 - 11.2.9 gifBuilderTextBox [Seite 232]
4.6.2.10 - 11.2.10 stdWrap [Seite 233]
4.6.3 - 11.3 Links [Seite 234]
4.6.3.1 - 11.3.1 baseUrlWrap [Seite 234]
4.6.3.2 - 11.3.2 getMailTo [Seite 234]
4.6.3.3 - 11.3.3 getTypoLink [Seite 235]
4.6.3.4 - 11.3.4 getTypoLink_URL [Seite 235]
4.6.3.5 - 11.3.5 http_makelinks [Seite 236]
4.6.3.6 - 11.3.6 imageLinkWrap [Seite 236]
4.6.3.7 - 11.3.7 mailto_makelinks [Seite 236]
4.6.3.8 - 11.3.8 pi_getPageLink [Seite 237]
4.6.3.9 - 11.3.9 pi_linkToPage [Seite 237]
4.6.3.10 - 11.3.10 pi_linkTP [Seite 238]
4.6.3.11 - 11.3.11 pi_linkTP_keepPIvars [Seite 238]
4.6.3.12 - 11.3.12 pi_linkTP_keepPIvars_url [Seite 238]
4.6.3.13 - 11.3.13 pi_openAtagHrefInJSwindow [Seite 239]
4.6.3.14 - 11.3.14 prefixLocalAnchorsWithScript [Seite 239]
4.6.4 - 11.4 Listen [Seite 239]
4.6.4.1 - 11.4.1 pi_list_browseresults [Seite 240]
4.6.4.2 - 11.4.2 pi_list_linkSingle [Seite 241]
4.6.4.3 - 11.4.3 pi_list_makelist [Seite 241]
4.6.4.4 - 11.4.4 pi_list_modeSelector [Seite 242]
4.6.4.5 - 11.4.5 pi_list_searchBox [Seite 242]
4.6.5 - 11.5 JavaScript [Seite 243]
4.6.5.1 - 11.5.1 additionalHeaderData [Seite 243]
4.6.5.2 - 11.5.2 additionalJavaScript [Seite 243]
4.6.5.3 - 11.5.3 JSeventFuncCalls [Seite 244]
4.6.5.4 - 11.5.4 minifyJavaScript [Seite 244]
4.6.5.5 - 11.5.5 quoteJSvalue [Seite 245]
4.6.5.6 - 11.5.6 rawUrlEncodeJS [Seite 245]
4.6.5.7 - 11.5.7 setJS [Seite 245]
4.6.5.8 - 11.5.8 wrapJS [Seite 246]
4.6.6 - 11.6 CSS [Seite 246]
4.6.6.1 - 11.6.1 additionalCSS [Seite 246]
4.6.6.2 - 11.6.2 additionalHeaderData [Seite 247]
4.6.6.3 - 11.6.3 pi_getClassName [Seite 247]
4.6.6.4 - 11.6.4 pi_setClassStyle [Seite 247]
4.6.6.5 - 11.6.5 setCSS [Seite 248]
4.6.7 - 11.7 Mehrsprachigkeit [Seite 249]
4.6.7.1 - 11.7.1 getLLL [Seite 249]
4.6.7.2 - 11.7.2 pi_getLL [Seite 249]
4.6.7.3 - 11.7.3 readLLfile [Seite 250]
4.6.8 - 11.8 Umgebungsvariablen und allgemeine Funktionen [Seite 250]
4.6.8.1 - 11.8.1 absRefPrefix [Seite 250]
4.6.8.2 - 11.8.2 additionalHeaderData [Seite 251]
4.6.8.3 - 11.8.3 all [Seite 251]
4.6.8.4 - 11.8.4 anchorPrefix [Seite 252]
4.6.8.5 - 11.8.5 applicationData [Seite 252]
4.6.8.6 - 11.8.6 ATagParams [Seite 252]
4.6.8.7 - 11.8.7 baseUrl [Seite 253]
4.6.8.8 - 11.8.8 baseUrlWrap [Seite 253]
4.6.8.9 - 11.8.9 beUserLogin [Seite 253]
4.6.8.10 - 11.8.10 clientInfo [Seite 253]
4.6.8.11 - 11.8.11 content [Seite 254]
4.6.8.12 - 11.8.12 defaultBodyTag [Seite 254]
4.6.8.13 - 11.8.13 domainStartPage [Seite 254]
4.6.8.14 - 11.8.14 extTarget [Seite 255]
4.6.8.15 - 11.8.15 fePreview [Seite 255]
4.6.8.16 - 11.8.16 id [Seite 255]
4.6.8.17 - 11.8.17 imagesOnPage [Seite 256]
4.6.8.18 - 11.8.18 intTarget [Seite 256]
4.6.8.19 - 11.8.19 lang [Seite 256]
4.6.8.20 - 11.8.20 lastImageInfo [Seite 257]
4.6.8.21 - 11.8.21 loginUser [Seite 257]
4.6.8.22 - 11.8.22 no_cache [Seite 257]
4.6.8.23 - 11.8.23 page [Seite 258]
4.6.8.24 - 11.8.24 printError [Seite 258]
4.6.8.25 - 11.8.25 rootLine [Seite 259]
4.6.8.26 - 11.8.26 siteScript [Seite 259]
4.6.8.27 - 11.8.27 tmpl->config, tmpl->setup [Seite 260]
4.6.8.28 - 11.8.28 type [Seite 260]
4.6.8.29 - 11.8.30 uniqueString [Seite 261]
4.6.9 - 11.9 Konfiguration mit Flexforms [Seite 261]
4.6.9.1 - 11.9.1 Erstellen einer Plug-in_Flexform [Seite 261]
4.6.9.2 - 11.9.2 Auslesen der Formulardaten [Seite 262]
4.6.10 - 11.10 Konfiguration mit TypoScript [Seite 262]
4.6.11 - 11.11 Konfiguration im Extension-Manager [Seite 263]
4.7 - 12 Frontend-User & Sessions [Seite 264]
4.7.1 - 12.1 Frontend-User [Seite 264]
4.7.1.1 - 12.1.1 Daten des aktuell angemeldeten Users [Seite 264]
4.7.2 - 12.2 Sessions [Seite 264]
4.7.2.1 - 12.2.1 Daten speichern [Seite 264]
4.7.2.2 - 12.2.2 Daten auslesen [Seite 265]
4.7.2.3 - 12.2.3 Warenkorb aufbauen [Seite 265]
4.8 - 13 Backend & Services [Seite 268]
4.8.1 - 13.1 Eigene Flexforms [Seite 268]
4.8.1.1 - 13.1.1 Mehrsprachigkeit [Seite 269]
4.8.1.2 - 13.1.2 Tabs [Seite 270]
4.8.1.3 - 13.1.3 Elemente [Seite 271]
4.8.1.4 - 13.1.4 Flexform-Daten im Frontend [Seite 275]
4.8.2 - 13.2 Backend-Module [Seite 276]
4.8.2.1 - 13.2.1 Dokumententypen für $this->doc [Seite 276]
4.8.2.2 - 13.2.2 TypoScript einer Seite auslesen [Seite 276]
4.8.2.3 - 13.2.3 AJAX im Backend [Seite 276]
4.8.3 - 13.3 Services [Seite 278]
4.8.4 - 13.4 cli [Seite 278]
4.8.5 - 13.5 Debugging [Seite 279]
4.8.5.1 - 13.5.1 debug [Seite 279]
4.8.5.2 - 13.5.2 debug_ordvalue [Seite 280]
4.8.5.3 - 13.5.3 debug_trail [Seite 280]
4.8.5.4 - 13.5.4 debugRows [Seite 280]
4.8.5.5 - 13.5.5 devLog [Seite 281]
5 - Teil III Extbase und Fluid [Seite 282]
5.1 - 14 Der neue Weg der Extension-Programmierung [Seite 284]
5.1.1 - 14.1 Grundlagen der objektorientierten Programmierung [Seite 286]
5.1.1.1 - 14.1.1 Klassen und Objekte [Seite 286]
5.1.1.2 - 14.1.2 Vererbung von Klassen [Seite 290]
5.1.1.3 - 14.1.3 Kontrollierte Vererbung - abstrakte und finale Klassen [Seite 292]
5.1.1.4 - 14.1.4 Sichtbarkeiten: public, private und protected [Seite 293]
5.1.1.5 - 14.1.5 Interfaces [Seite 294]
5.1.1.6 - 14.1.6 Type Hints [Seite 296]
5.1.1.7 - 14.1.7 Statische Methoden und Eigenschaften [Seite 296]
5.1.1.8 - 14.1.8 Namespaces [Seite 297]
5.1.2 - 14.2 Neue Konzepte [Seite 298]
5.1.2.1 - 14.2.1 Domain Driven Design [Seite 299]
5.1.2.2 - 14.2.2 Model-View-Controller [Seite 300]
5.1.2.3 - 14.2.3 Modellierung [Seite 301]
5.1.2.4 - 14.2.4 Gemeinsamens Vokabular - Ubiquitous Language [Seite 301]
5.1.2.5 - 14.2.5 Die Elemente des Modells [Seite 304]
5.1.2.5.1 - 14.2.5.1 Entities (Entitäten) [Seite 304]
5.1.2.5.2 - 14.2.5.2 Value Objects [Seite 304]
5.1.2.5.3 - 14.2.5.3 Services [Seite 304]
5.1.2.5.4 - 14.2.5.4 Aggregates [Seite 304]
5.1.2.5.5 - 14.2.5.5 Factories [Seite 305]
5.1.2.5.6 - 14.2.5.6 Repositories [Seite 305]
5.2 - 15 Ein Rundgang durchs System [Seite 306]
5.2.1 - 15.1 Installation von Extbase und Fluid [Seite 306]
5.2.2 - 15.2 Installation der Extension blog_example [Seite 308]
5.2.3 - 15.3 Datenstruktur im Blog-Example [Seite 310]
5.2.4 - 15.4 Namenskonventionen [Seite 312]
5.2.4.1 - 15.4.1 Verzeichnis- und Dateinamen [Seite 313]
5.2.4.2 - 15.4.2 Klassennamen [Seite 313]
5.2.4.3 - 15.4.3 Controller und Actions [Seite 314]
5.2.5 - 15.5 Die Dateistruktur im Extension-Root-Verzeichnis [Seite 314]
5.2.5.1 - 15.5.1 Die Datei ext_emconf.php [Seite 315]
5.2.5.2 - 15.5.2 Die Datei ext_tables.php [Seite 316]
5.2.5.3 - 15.5.3 Die Datei ext_localconf.php [Seite 320]
5.2.5.4 - 15.5.4 Die Dateien ext_tables.sql und ext_icon.gif [Seite 321]
5.2.6 - 15.6 Die Verzeichnisstruktur [Seite 321]
5.2.6.1 - 15.6.1 Das Verzeichnis Classes [Seite 322]
5.2.6.2 - 15.6.2 Das Verzeichnis Configuration [Seite 323]
5.2.6.3 - 15.6.3 Das Verzeichnis Module [Seite 324]
5.2.6.4 - 15.6.4 Das Verzeichnis Resources [Seite 324]
5.2.6.5 - 15.6.5 Weitere Verzeichnisse [Seite 324]
5.2.7 - 15.7 Der prinzipielle Ablauf [Seite 324]
5.2.7.1 - 15.7.1 Aufruf des Dispatchers (Schritt 1) [Seite 325]
5.2.7.2 - 15.7.2 Aufruf des Controllers (Schritt 2) [Seite 328]
5.2.7.3 - 15.7.3 Ansprechen des Respositorys (Schritt 3) [Seite 328]
5.2.7.4 - 15.7.4 Zurückliefern der Blog-Objekte (Schritt 4) [Seite 328]
5.2.7.5 - 15.7.5 Das Objekt wird dem View zugeordnet (Schritt 5) [Seite 330]
5.2.7.6 - 15.7.6 Rückgabe der Template-Ausgabe an den Controller (Schritt 6) [Seite 332]
5.2.7.7 - 15.7.7 Rückgabe der Ausgabe an den Dispatcher (Schritt 7) [Seite 333]
5.2.7.8 - 15.7.8 Rückgabe der Ausgabe an TYPO3 (Schritt 8) [Seite 333]
5.3 - 16 Entwicklung eines eigenenPlug-ins [Seite 334]
5.3.1 - 16.1 Aufbau einer minimal funktionstüchtigen Extension [Seite 334]
5.3.1.1 - 16.1.1 Extension-Key [Seite 334]
5.3.1.2 - 16.1.2 Verzeichnisse anlegen [Seite 335]
5.3.1.3 - 16.1.3 Die Datei ext_emconf.php [Seite 335]
5.3.1.4 - 16.1.4 Die Dateien ext_localconf.php und ext_tables.php [Seite 336]
5.3.1.5 - 16.1.5 Einrichten eines Standard-Controllers [Seite 337]
5.3.1.6 - 16.1.6 Installieren der Extension und das erste Erfolgserlebnis [Seite 338]
5.3.2 - 16.2 Hinzufügen eines Views [Seite 339]
5.3.3 - 16.3 Entitäten einführen [Seite 341]
5.3.4 - 16.4 Daten persistieren (Datenspeicher) [Seite 343]
5.3.4.1 - 16.4.1 Datenbankstruktur - die Datei ext_tables.sql [Seite 344]
5.3.4.2 - 16.4.2 Datenbankstruktur - das TCA [Seite 348]
5.3.5 - 16.5 Anlegen eines Repositorys [Seite 352]
5.3.6 - 16.6 Anlegen einer neuen Action [Seite 354]
5.3.6.1 - 16.6.1 Anlegen der Action addAction() [Seite 355]
5.3.7 - 16.7 Daten per Formular eingeben und auswerten [Seite 356]
5.3.8 - 16.8 Objekte aus dem Repository entfernen [Seite 357]
5.3.8.1 - 16.8.1 Zufügen der Action delete in der Konfiguration [Seite 357]
5.3.8.2 - 16.8.2 Anpassen der Template-Datei index.html [Seite 357]
5.3.8.2.1 - 16.8.2.1 Zufügen der Action delete im Blog-Controller [Seite 358]
5.3.9 - 16.9 Update von Objekten [Seite 358]
5.3.9.1 - 16.9.1 Edit- und Update-Action hinzufügen [Seite 358]
5.3.10 - 16.10 Der Query-Manager [Seite 360]
5.3.11 - 16.11 Eingabevalidierung [Seite 362]
5.3.12 - 16.12 Validatoren [Seite 362]
5.3.12.1 - 16.12.1 Vordefinierte Validatoren [Seite 362]
5.3.12.2 - 16.12.2 Eigene Validatoren [Seite 363]
5.3.12.3 - 16.12.3 Ausgabe der Fehler [Seite 366]
5.3.12.4 - 16.12.4 Optionale Argumente [Seite 366]
5.3.13 - 16.13 Relationen zu anderen Tabellen [Seite 367]
5.3.13.1 - 16.13.1 Erweiterung des TCA [Seite 367]
5.3.13.2 - 16.13.2 Die Domain-Klasse Tx_Simpleblog_Domain_Model_Post [Seite 368]
5.3.13.3 - 16.13.3 Registrieren der Actions in der Datei ext_localconf.php [Seite 369]
5.3.13.4 - 16.13.4 Erstellung des Post-Controllers [Seite 369]
5.3.13.5 - 16.13.5 Neue Templates und Template-Änderungen [Seite 371]
5.3.13.6 - 16.13.6 Ändern der Blog-Identity [Seite 373]
5.3.13.7 - 16.13.7 Aufruf der Extension im Frontend [Seite 375]
5.3.14 - 16.14 Relationen zu anderen Tabellen m:n [Seite 375]
5.3.15 - 16.15 Mehrsprachigkeit zufügen [Seite 380]
5.3.16 - 16.16 Konfiguration mittels TypoScript [Seite 382]
5.3.17 - 16.17 Backend-Module mit Extbase [Seite 384]
5.3.18 - 16.18 Der Extbase-Kickstarter [Seite 385]
5.3.18.1 - 16.18.1 Installation des Extbase-Kickstarters [Seite 386]
5.3.18.2 - 16.18.2 Überblick über den Arbeitsbereich [Seite 387]
5.3.18.3 - 16.18.3 Eingabe der Extension-Konfiguration [Seite 388]
5.3.18.4 - 16.18.4 Modellierung [Seite 389]
5.3.18.4.1 - 16.18.4.1 Anlegen des Blog-Objekts [Seite 390]
5.3.18.5 - 16.18.5 Anlegen des Post-Objekts [Seite 391]
5.3.18.6 - 16.18.6 Anlegen des Tag-Objekts [Seite 391]
5.3.18.7 - 16.18.7 Relationen festlegen [Seite 392]
5.3.19 - 16.19 Weitere Extbase-Interna [Seite 393]
5.3.19.1 - 16.19.1 StoragePid [Seite 393]
5.3.19.1.1 - 16.19.1.1 Schreibzugriffe [Seite 394]
5.3.19.1.2 - 16.19.1.2 Aktualisieren [Seite 394]
5.3.19.1.3 - 16.19.1.3 Lesen [Seite 395]
5.3.19.2 - 16.19.2 MVC-Request [Seite 395]
5.3.19.3 - 16.19.3 FlashMessages realisieren [Seite 396]
5.4 - 17 Die Fluid-Template-Engine [Seite 398]
5.4.1 - 17.1 Vorbereitung [Seite 399]
5.4.2 - 17.2 Basissyntax und einfache Ausgabe [Seite 401]
5.4.2.1 - 17.2.1 Arrays [Seite 401]
5.4.2.2 - 17.2.2 Objekte [Seite 402]
5.4.3 - 17.3 Fluid ViewHelper-Syntax [Seite 403]
5.4.3.1 - 17.3.1 Namespace (Namensraum) [Seite 403]
5.4.3.2 - 17.3.2 Argumente [Seite 404]
5.4.3.2.1 - 17.3.2.1 Boolesche Ausdrücke [Seite 404]
5.4.3.2.2 - 17.3.2.2 Komplexe boolesche Ausdrücke [Seite 405]
5.4.3.2.3 - 17.3.2.3 Arrays [Seite 405]
5.4.4 - 17.4 ViewHelper-Übersicht [Seite 406]
5.4.4.1 - 17.4.1 alias [Seite 406]
5.4.4.2 - 17.4.2 base [Seite 407]
5.4.4.3 - 17.4.3 cObject [Seite 407]
5.4.4.4 - 17.4.4 count [Seite 408]
5.4.4.5 - 17.4.5 cycle [Seite 408]
5.4.4.6 - 17.4.6 debug [Seite 409]
5.4.4.7 - 17.4.7 else [Seite 409]
5.4.4.8 - 17.4.8 for [Seite 409]
5.4.4.9 - 17.4.9 form [Seite 410]
5.4.4.9.1 - 17.4.9.1 form.checkbox [Seite 412]
5.4.4.9.2 - 17.4.9.2 form.error [Seite 413]
5.4.4.9.3 - 17.4.9.3 form.hidden [Seite 413]
5.4.4.9.4 - 17.4.9.4 form.password [Seite 414]
5.4.4.9.5 - 17.4.9.5 form.radio [Seite 415]
5.4.4.9.6 - 17.4.9.6 form.select [Seite 416]
5.4.4.9.7 - 17.4.9.7 form.submit [Seite 418]
5.4.4.9.8 - 17.4.9.8 form.textarea [Seite 419]
5.4.4.9.9 - 17.4.9.9 form.textbox [Seite 420]
5.4.4.9.10 - 17.4.9.10 form.upload [Seite 420]
5.4.4.10 - 17.4.10 format [Seite 421]
5.4.4.10.1 - 17.4.10.1 format.crop [Seite 421]
5.4.4.10.2 - 17.4.10.2 format.currency [Seite 422]
5.4.4.10.3 - 17.4.10.3 format.date# [Seite 422]
5.4.4.10.4 - 17.4.10.4 format.html [Seite 423]
5.4.4.10.5 - 17.4.10.5 format.nl2br [Seite 424]
5.4.4.10.6 - 17.4.10.6 format.number [Seite 424]
5.4.4.10.7 - 17.4.10.7 format.padding [Seite 424]
5.4.4.10.8 - 17.4.10.8 format.printf [Seite 425]
5.4.4.11 - 17.4.11 groupedFor [Seite 425]
5.4.4.12 - 17.4.12 if [Seite 426]
5.4.4.13 - 17.4.13 image [Seite 427]
5.4.4.14 - 17.4.14 layout [Seite 428]
5.4.4.15 - 17.4.15 link [Seite 428]
5.4.4.15.1 - 17.4.15.1 link.action [Seite 428]
5.4.4.15.2 - 17.4.15.2 link.email [Seite 430]
5.4.4.15.3 - 17.4.15.3 link.external [Seite 430]
5.4.4.15.4 - 17.4.15.4 link.page [Seite 432]
5.4.4.16 - 17.4.16 render [Seite 432]
5.4.4.17 - 17.4.17 renderFlashMessages [Seite 433]
5.4.4.18 - 17.4.18 section [Seite 434]
5.4.4.19 - 17.4.19 then [Seite 434]
5.4.4.20 - 17.4.20 translate [Seite 434]
5.4.4.21 - 17.4.21 uri [Seite 435]
5.4.5 - 17.5 Erstellen eines eigenen ViewHelpers [Seite 435]
5.4.5.1 - 17.5.1 Der Dummytext-ViewHelper [Seite 436]
5.4.5.2 - 17.5.2 Zugriff auf die übergebenen Argumente [Seite 437]
5.4.5.3 - 17.5.3 Zufügen von Argumenten [Seite 438]
5.4.5.4 - 17.5.4 Tag-basierende ViewHelper [Seite 438]
5.4.5.5 - 17.5.5 Der Variablen-Container [Seite 439]
5.4.6 - 17.6 Verwendung von Fluid in klassischen Extensions [Seite 440]
5.4.7 - 17.7 Layouts und Partials [Seite 441]
6 - Register [Seite 446]
Das TYPO3-Projekt steht am Scheideweg. Einerseits wird weiterhin auf die allseits bewährte Basis der Version 4.x vertraut - andererseits steht mit dem Rewrite der Version 5.x eine architektonisch komplett neue Version in den Startlöchern bzw. ist gar schon erschienen. Technisch gesehen handelt es sich dabei um zwei völlig verschiedene Programme. Während der 4er-Zweig in den letzten elf Jahren organisch gewachsen und so auch vom Code her selbst für Experten unübersichtlich und weitläufig ist, baut die 5er-Version auf einem der modernsten Frameworks auf, die es momentan auf dem Markt gibt - namentlich FLOW3.
Dieses Framework wurde von Anfang an gezielt so konzipiert, dass es all jene Unzulänglichkeiten der technischen Basis der 4er-Version vermeidet und neue, leistungsstarke Konzepte einführt, die es ermöglichen, moderne und zeitgemäße Webapplikationen zu erschaffen. Man hatte anfangs zwar darüber nachgedacht, ob dieses Ziel auch möglich wäre, wenn man den bestehenden Code der 4er-Version anpasst, hat aber dann bald feststellen müssen, dass dies aufgrund der dort verwendeten Architektur nicht möglich ist.
So hat man beschlossen, TYPO3 5.x komplett neu zu entwickeln, und dabei festgestellt, dass es sinnvoll ist, dieses Projekt in zwei Teile zu trennen - in das zugrunde liegende PHP-Webapplikations-Framework FLOW3 und das Content-Management-System TYPO3 5 - das lediglich" eine sogenannte Komponente, also eine Art Extension für FLOW3 ist.
Mit dem Architekturwechsel einher geht aber auch ein relativ dramatischer Sachverhalt. Während es für das Kernsystem letztlich egal ist, wenn der komplette Quellcode ausgetauscht wird, trifft dies für die Extension nicht zu. Es gibt momentan weit über 3500 Extensions für TYPO3 4.x. Keine dieser Extensions kann in der Version TYPO3 5.x wieder verwendet werden. Letztlich müssen alle (oder zumindest die wichtigsten) Extensions komplett neu geschrieben werden. Dies muss freilich nicht sofort geschehen. Im Oktober 2008 wurde von den Kernentwicklern beider TYPO3-Entwicklungszweige das sogenannte Berlin Manifesto1 verabschiedet.
Dieses besagt zwar grundsätzlich, dass die Entwicklung von TYPO3 4.x noch einige Jahre weitergehen wird und man somit mit der klassischen Art, Extensions zu schreiben, ebenso lange weitermachen könnte, aber die Erfahrung zeigt, dass Kunden sicherlich bei neuen Projekten direkt auch auf die zukunftsträchtigere Technologie der Version 5.x setzen wollen. Immerhin wird oftmals viel Geld in die Entwicklung gesteckt, und daher will man sicher sein, dieses auch bei einem eventuellen Technologiewechsel nicht erneut investieren zu müssen. Dies geht allerdings natürlich erst, wenn eine stabile Version von TYPO3 5.x erschienen ist. Bestehende Projekte werden sicherlich nicht bei Erscheinen der neuen Version gleich neu aufgebaut werden.
Ebenso befinden sich Projekte, die jetzt begonnen werden sollen, in der Zwickmühle. Die neue Version von TYPO3 ist noch nicht stabil, aber die "alte" Version erscheint nicht zukunftsträchtig genug. Hier wäre es sinnvoll, eine Möglichkeit zu haben, direkt in TYPO3 4.x Extensions nach den neuen Methoden und Paradigmen der Version 5.x zu schreiben, die man dann später - bei Erscheinen der stabilen Version von TYPO3 5.x - mit geringem änderungsaufwand wieder verwenden kann. Damit könnte man gleich hier und heute anfangen, neue Entwicklungen zu starten, die aber auch in der Zukunft einsetzbar sind."
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.