alexander ebner patrick bernhard ulbrich · pdf file1.1 aufbau und struktur von typo3 ... 1.5...
TRANSCRIPT
PROFESSIONELLE FRONTEND- UND BACK END-PROGRAMMIERUNG
alexander EBNER
patrick LOBACHER
bernhard ULBRICH
TYPO3EXTENSIONS
Mit
Extbaseund
Fluid
V
Inhalt
Teil I –Klassische Extensionprogrammierung
1 Grundlagen............................................................................................................... 31.1 Aufbau und Struktur von TYPO3 ............................................................................................31.2 Aufbau einer Extension............................................................................................................61.3 Arten und Einteilung von Extensions.......................................................................................71.4 Der Extension-Key...................................................................................................................81.5 TYPO3 Coding Guidelines ......................................................................................................9
1.5.1 Namespace ...............................................................................................................101.5.2 PHP-Regeln..............................................................................................................111.5.3 Dateistruktur.............................................................................................................121.5.4 PHP-Syntax ..............................................................................................................151.5.5 phpDoc .....................................................................................................................211.5.6 Changelog.................................................................................................................22
2 Eine Extension planen und entwickeln................................................................ 232.1 Extensions planen ..................................................................................................................23
2.1.1 Wir planen eine Blog-Extension...............................................................................242.2 Der Kickstarter.......................................................................................................................26
2.2.1 Die Datenbank..........................................................................................................282.2.2 Datenbanktabellen und Formulare – eine Erklärung ................................................342.2.3 Extend existing Tables .............................................................................................362.2.4 Frontend-Plug-ins.....................................................................................................372.2.5 Backend-Module ......................................................................................................402.2.6 Integrate in existing Modules ...................................................................................412.2.7 Clickmenu items.......................................................................................................412.2.8 Services ....................................................................................................................422.2.9 Static TypoScript code .............................................................................................43
Inhalt
VI
2.2.10 TSconfig...................................................................................................................432.2.11 Die Extension erstellen.............................................................................................44
2.3 Extension-Konfiguration mit ext_emconf.php.......................................................................452.4 Die weiteren Dateien der Extension.......................................................................................50
2.4.1 Verzeichnis doc........................................................................................................502.4.2 Verzeichnis mod#.....................................................................................................502.4.3 Verzeichnis modfunc#..............................................................................................512.4.4 Verzeichnis pi#.........................................................................................................522.4.5 Verzeichnis Static.....................................................................................................522.4.6 Datei Changelog.......................................................................................................532.4.7 Datei README.txt ..................................................................................................532.4.8 Datei ext_icon.gif .....................................................................................................532.4.9 Datei ext_localconf.php ...........................................................................................532.4.10 Datei ext_tables.php .................................................................................................532.4.11 Datei ext_tables.sql ..................................................................................................542.4.12 Datei ext_tables_static+adt.sql .................................................................................552.4.13 Dateien Icon_tx_extkey_tabellenname.gif ...............................................................562.4.14 Datei locallang.xml ..................................................................................................562.4.15 Datei locallang_db.xml ............................................................................................562.4.16 Datei tca.php ............................................................................................................56
3 Backend-Module erstellen .................................................................................... 653.1 Module konfigurieren und im Hauptmenü anordnen .............................................................653.2 Einen eigenen Navigationsbaum erstellen .............................................................................693.3 Backend-Modul erstellen .......................................................................................................75
3.3.1 Das Modul initialisieren ...........................................................................................753.3.2 Den Modulinhalt aufbauen.......................................................................................793.3.3 Extension-Konfiguration über ext_conf_template.txt ..............................................803.3.4 Backend-Formulare aufrufen ...................................................................................823.3.5 Eine Datensatzliste mit Bearbeitungsfunktionen erstellen........................................843.3.6 Aufgabe: Module für Kommentare, Blog und Blogroll............................................90
3.4 Backend User Object – $BE_USER ......................................................................................913.5 Das Systemlog .......................................................................................................................92
4 Frontend-Plug-ins.................................................................................................. 954.1 Das Frontend-Plug-in im Überblick.......................................................................................954.2 Feldinhalte für die Ausgabe aufbereiten .............................................................................. 103
4.2.1 Das Bild für Teaser Image...................................................................................... 1044.2.2 Ausgabe des Haupttextes in der Listenansicht, wenn erwünscht........................... 1054.2.3 Haupttext mit RTE formatieren.............................................................................. 1054.2.4 Haupttext statt Teasertext anzeigen, falls dieser nicht verfügbar ist...................... 1064.2.5 Verlinken des Autorennamens mit der Mail-Adresse des Autors.......................... 1064.2.6 Kategorien als Namen anzeigen und verlinken (Relationen).................................. 107
4.3 HTML-Templates für das Plug-in........................................................................................ 1094.4 Die Kommentarfunktion mit AJAX und eID ....................................................................... 114
4.4.1 Ausgabe vorhandener Kommentare ....................................................................... 115
Inhalt
VII
4.4.2 Das Kommentarformular hinzufügen .....................................................................1184.5 Was sind Hooks?..................................................................................................................1234.6 Flexforms .............................................................................................................................125
4.6.1 Erzeugen der Flexform...........................................................................................1264.7 Das Plug-in pi2.....................................................................................................................132
5 Dokumentation und Abschluß............................................................................ 1335.1 Code dokumentieren mit extdeveval ....................................................................................1335.2 Extension-Dokumentation schreiben....................................................................................134
5.2.1 Die Vorlage ............................................................................................................1355.2.2 Der Aufbau der Dokumentation .............................................................................1355.2.3 Vorlagenstile ..........................................................................................................1365.2.4 Die Dokumentation verfassen ................................................................................136
5.3 Upload ins TER....................................................................................................................137
Teil II –Funktionsreferenz zur klassischen Extensionprogrammierung
6 Datenbank ............................................................................................................ 1416.1 $GLOBALS['TYPO3_DB'] .................................................................................................141
6.1.1 exec_SELECTquery ...............................................................................................1416.1.2 exec_SELECT_queryArray....................................................................................1416.1.3 exec_SELECTgetRows ..........................................................................................1426.1.4 exec_SELECT_mm_query.....................................................................................1426.1.5 exec_INSERTquery................................................................................................1436.1.6 exec_UPDATEquery..............................................................................................1436.1.7 exec_DELETEquery...............................................................................................1436.1.8 sql_fetch_assoc.......................................................................................................1436.1.9 sql_fetch_row.........................................................................................................1446.1.10 searchQuery............................................................................................................1446.1.11 listQuery .................................................................................................................1446.1.12 splitGroupOrderLimit.............................................................................................1456.1.13 quoteStr ..................................................................................................................1456.1.14 fullQuoteStr............................................................................................................1456.1.15 fullQuoteArray .......................................................................................................1466.1.16 escapeStrForLike....................................................................................................1466.1.17 cleanIntArray..........................................................................................................1476.1.18 cleanIntList.............................................................................................................1476.1.19 debug_lastBuiltQuery.............................................................................................147
6.2 tslib_pibase ..........................................................................................................................1486.2.1 pi_exec_query ........................................................................................................1486.2.2 pi_getPidList ..........................................................................................................1496.2.3 pi_getRecord ..........................................................................................................1506.2.4 pi_prependFieldsWithTable ...................................................................................150
Inhalt
VIII
6.3 cObj ..................................................................................................................................... 1516.3.1 DBgetDelete........................................................................................................... 1516.3.2 DBgetInsert ............................................................................................................ 1516.3.3 DBgetUpdate.......................................................................................................... 1526.3.4 enableFields ........................................................................................................... 153
7 Dateisystem.......................................................................................................... 1557.1 t3lib_div............................................................................................................................... 155
7.1.1 dirname .................................................................................................................. 1557.1.2 fixWindowsFilePath............................................................................................... 1557.1.3 formatSize .............................................................................................................. 1567.1.4 get_dirs................................................................................................................... 1567.1.5 getAllFilesAndFoldersInPath................................................................................. 1577.1.6 getFileAbsFileName............................................................................................... 1587.1.7 getFilesInDir .......................................................................................................... 1587.1.8 getURL................................................................................................................... 1597.1.9 isAbsPath ............................................................................................................... 1597.1.10 isAllowedAbsPath.................................................................................................. 1597.1.11 mkdir ...................................................................................................................... 1607.1.12 mkdir_deep............................................................................................................. 1607.1.13 removePrefixPathFromList .................................................................................... 1607.1.14 resolveBackPath..................................................................................................... 1617.1.15 rmdir....................................................................................................................... 1617.1.16 split_fileref ............................................................................................................. 1627.1.17 tempnam................................................................................................................. 1627.1.18 unlink_tempfile ...................................................................................................... 1627.1.19 upload_copy_move ................................................................................................ 1627.1.20 upload_to_tempfile ................................................................................................ 1637.1.21 verifyFilenameAgainstDenyPattern ....................................................................... 1637.1.22 writeFile ................................................................................................................. 1647.1.23 writeFileToTypo3tempDir ..................................................................................... 164
8 Strings, Arrays und Umgebungsvariablen ........................................................ 1658.1 Allgemeine Funktionen........................................................................................................ 165
8.1.1 _GET...................................................................................................................... 1658.1.2 _GETset ................................................................................................................. 1658.1.3 _GP ........................................................................................................................ 1668.1.4 _POST.................................................................................................................... 1668.1.5 callUserFunction .................................................................................................... 1668.1.6 clientInfo ................................................................................................................ 1678.1.7 compat_version ...................................................................................................... 1678.1.8 compileSelectedGetVarsFromArray ...................................................................... 1688.1.9 getHostname........................................................................................................... 1688.1.10 getIndpEnv............................................................................................................. 1688.1.11 getThisUrl .............................................................................................................. 1688.1.12 linkThisScript......................................................................................................... 169
Inhalt
IX
8.1.13 linkThisUrl .............................................................................................................1698.1.14 locationHeaderUrl ..................................................................................................1698.1.15 makeInstance..........................................................................................................1708.1.16 makeInstanceService ..............................................................................................1708.1.17 rmFromList.............................................................................................................1708.1.18 sysLog ....................................................................................................................171
8.2 String-Funktionen ................................................................................................................1718.2.1 calcParenthesis .......................................................................................................1718.2.2 cmpFQDN ..............................................................................................................1718.2.3 cmpIP .....................................................................................................................1728.2.4 convUmlauts...........................................................................................................1728.2.5 csvValues ...............................................................................................................1728.2.6 deHSCentities.........................................................................................................1738.2.7 expandList ..............................................................................................................1738.2.8 fixed_lgd ................................................................................................................1738.2.9 fixed_lgd_pre .........................................................................................................1748.2.10 formatForTextarea..................................................................................................1748.2.11 generateRandomBytes............................................................................................1748.2.12 get_tag_attributes ...................................................................................................1758.2.13 htmlspecialchars_decode........................................................................................1758.2.14 implodeArrayForUrl...............................................................................................1758.2.15 implodeAttributes...................................................................................................1768.2.16 inList ......................................................................................................................1768.2.17 int_from_ver...........................................................................................................1778.2.18 intInRange ..............................................................................................................1778.2.19 intval_positive ........................................................................................................1788.2.20 isFirstPartOfStr.......................................................................................................1788.2.21 md5int ....................................................................................................................1788.2.22 milliseconds............................................................................................................1798.2.23 modifyHTMLColor ................................................................................................1798.2.24 modifyHTMLColorAll ...........................................................................................1798.2.25 normalizeIPv6 ........................................................................................................1808.2.26 removeXSS.............................................................................................................1808.2.27 revExplode .............................................................................................................1808.2.28 rm_endcomma........................................................................................................1818.2.29 shortMD5 ...............................................................................................................1818.2.30 split_tag_attributes .................................................................................................1818.2.31 splitCalc..................................................................................................................1828.2.32 strtolower................................................................................................................1838.2.33 strtoupper................................................................................................................1838.2.34 substUrlsInPlainText ..............................................................................................1838.2.35 testInt......................................................................................................................1848.2.36 trimExplode............................................................................................................1848.2.37 uniqueList...............................................................................................................1858.2.38 validEmail ..............................................................................................................1858.2.39 validIP ....................................................................................................................185
Inhalt
X
8.2.40 validIPv4 ................................................................................................................ 1868.2.41 validIPv6 ................................................................................................................ 186
8.3 Array-Funktionen................................................................................................................. 1868.3.1 addSlashesOnArray................................................................................................ 1868.3.2 array_merge ........................................................................................................... 1878.3.3 array_merge_recursive_overrule............................................................................ 1878.3.4 array2json............................................................................................................... 1888.3.5 array2xml ............................................................................................................... 1888.3.6 arrayToLogString................................................................................................... 1898.3.7 explodeUrl2Array .................................................................................................. 1908.3.8 inArray ................................................................................................................... 1908.3.9 print_array.............................................................................................................. 1908.3.10 removeArrayEntryByValue.................................................................................... 1918.3.11 slashArray .............................................................................................................. 1918.3.12 view_array.............................................................................................................. 1928.3.13 xml2array ............................................................................................................... 1928.3.14 xml2tree .................................................................................................................1938.3.15 xmlGetHeaderAttribs ............................................................................................. 194
8.4 String-Funktionen in Frontend-Plug-ins .............................................................................. 1958.4.1 calcAge .................................................................................................................. 1958.4.2 checkEmail............................................................................................................. 1958.4.3 codeString .............................................................................................................. 1958.4.4 encryptEmail .......................................................................................................... 1968.4.5 HTMLcaseshift ...................................................................................................... 1968.4.6 keywords ................................................................................................................ 1968.4.7 linebreaks ............................................................................................................... 1978.4.8 processParams........................................................................................................ 1978.4.9 uniqueHash............................................................................................................. 1988.4.10 URLqMark ............................................................................................................. 198
9 Bilder .................................................................................................................... 1999.1 Einbinden............................................................................................................................. 1999.2 Bearbeiten ............................................................................................................................ 200
9.2.1 Bild umrechnen (fürs Web optimieren).................................................................. 2009.2.2 Abmessungen ändern ............................................................................................. 2019.2.3 Zuschneiden ........................................................................................................... 2019.2.4 Graustufen.............................................................................................................. 202
9.3 Erzeugen .............................................................................................................................. 2039.3.1 Bild in bestehendes Bild einfügen.......................................................................... 2039.3.2 Text erzeugen......................................................................................................... 204
10 AJAX im Frontend ............................................................................................... 20510.1 eID ....................................................................................................................................... 205
10.1.1 Konfiguration ......................................................................................................... 20510.1.2 Basisdatei ...............................................................................................................206
Inhalt
XI
10.2 Zusammenspiel AJAX & eID ..............................................................................................20610.2.1 Aufbau der XML-Response....................................................................................20610.2.2 AJAX-Request und Verarbeitung...........................................................................207
11 Frontend-Plug-ins ................................................................................................ 20911.1 Cache ...................................................................................................................................209
11.1.1 cacheExpires...........................................................................................................20911.1.2 clearPageCacheContent ..........................................................................................20911.1.3 clearPageCacheContent_pidList.............................................................................20911.1.4 get_cache_timeout..................................................................................................21011.1.5 set_cache_timeout_default .....................................................................................21011.1.6 set_no_cache ..........................................................................................................210
11.2 Content-Elemente.................................................................................................................21111.2.1 cImage ....................................................................................................................21111.2.2 cleanFormName .....................................................................................................21111.2.3 cObjGet ..................................................................................................................21111.2.4 cObjGetSingle ........................................................................................................21211.2.5 currentPageUrl........................................................................................................21211.2.6 fileResource............................................................................................................21311.2.7 getImgResource......................................................................................................21311.2.8 getSlidePids............................................................................................................21311.2.9 gifBuilderTextBox..................................................................................................21411.2.10 stdWrap ..................................................................................................................214
11.3 Links ....................................................................................................................................21511.3.1 baseUrlWrap...........................................................................................................21511.3.2 getMailTo...............................................................................................................21511.3.3 getTypoLink ...........................................................................................................21611.3.4 getTypoLink_URL .................................................................................................21611.3.5 http_makelinks .......................................................................................................21711.3.6 imageLinkWrap......................................................................................................21711.3.7 mailto_makelinks ...................................................................................................21811.3.8 pi_getPageLink.......................................................................................................21811.3.9 pi_linkToPage ........................................................................................................21811.3.10 pi_linkTP................................................................................................................21911.3.11 pi_linkTP_keepPIvars ............................................................................................21911.3.12 pi_linkTP_keepPIvars_url ......................................................................................21911.3.13 pi_openAtagHrefInJSwindow ................................................................................22011.3.14 prefixLocalAnchorsWithScript...............................................................................220
11.4 Listen ...................................................................................................................................22011.4.1 pi_list_browseresults ..............................................................................................22111.4.2 pi_list_linkSingle....................................................................................................22211.4.3 pi_list_makelist ......................................................................................................22211.4.4 pi_list_modeSelector ..............................................................................................22311.4.5 pi_list_searchBox ...................................................................................................223
Inhalt
XII
11.5 JavaScript............................................................................................................................. 224 11.5.1 additionalHeaderData............................................................................................. 22411.5.2 additionalJavaScript ............................................................................................... 22411.5.3 JSeventFuncCalls ................................................................................................... 22511.5.4 minifyJavaScript .................................................................................................... 22511.5.5 quoteJSvalue .......................................................................................................... 22611.5.6 rawUrlEncodeJS..................................................................................................... 22611.5.7 setJS ....................................................................................................................... 22711.5.8 wrapJS.................................................................................................................... 227
11.6 CSS ...................................................................................................................................... 22811.6.1 additionalCSS......................................................................................................... 22811.6.2 additionalHeaderData............................................................................................. 22811.6.3 pi_getClassName.................................................................................................... 22911.6.4 pi_setClassStyle ..................................................................................................... 22911.6.5 setCSS .................................................................................................................... 229
11.7 Mehrsprachigkeit ................................................................................................................. 23011.7.1 getLLL ................................................................................................................... 23011.7.2 pi_getLL.................................................................................................................23011.7.3 readLLfile............................................................................................................... 231
11.8 Umgebungsvariablen und allgemeine Funktionen ............................................................... 23211.8.1 absRefPrefix........................................................................................................... 23211.8.2 additionalHeaderData............................................................................................. 23211.8.3 all ........................................................................................................................... 23211.8.4 anchorPrefix ........................................................................................................... 23311.8.5 applicationData ...................................................................................................... 23311.8.6 ATagParams........................................................................................................... 23311.8.7 baseUrl ................................................................................................................... 23411.8.8 baseUrlWrap .......................................................................................................... 23411.8.9 beUserLogin........................................................................................................... 23411.8.10 clientInfo ................................................................................................................ 23411.8.11 content.................................................................................................................... 23511.8.12 defaultBodyTag...................................................................................................... 23511.8.13 domainStartPage .................................................................................................... 23511.8.14 extTarget ................................................................................................................ 23611.8.15 fePreview ............................................................................................................... 23611.8.16 id ........................................................................................................................... 23611.8.17 imagesOnPage........................................................................................................ 23711.8.18 intTarget ................................................................................................................. 23711.8.19 lang......................................................................................................................... 23711.8.20 lastImageInfo ......................................................................................................... 23811.8.21 loginUser................................................................................................................ 23811.8.22 no_cache................................................................................................................. 23811.8.23 page ........................................................................................................................ 23911.8.24 printError................................................................................................................ 23911.8.25 rootLine.................................................................................................................. 24011.8.26 siteScript ................................................................................................................ 240
Inhalt
XIII
11.8.27 tmpl->config, tmpl->setup......................................................................................24111.8.28 type.........................................................................................................................24111.8.29 TYPO3_CONF_VARS ..........................................................................................24111.8.30 uniqueString ...........................................................................................................242
11.9 Konfiguration mit Flexforms ...............................................................................................24211.9.1 Erstellen einer Plug-in_Flexform ...........................................................................24211.9.2 Auslesen der Formulardaten...................................................................................243
11.10 Konfiguration mit TypoScript ..............................................................................................24411.11 Konfiguration im Extension-Manager..................................................................................244
12 Frontend-User & Sessions.................................................................................. 24512.1 Frontend-User ......................................................................................................................245
12.1.1 Daten des aktuell angemeldeten Users ...................................................................24512.2 Sessions................................................................................................................................246
12.2.1 Daten speichern ......................................................................................................24612.2.2 Daten auslesen........................................................................................................24612.2.3 Warenkorb aufbauen ..............................................................................................246
13 Backend & Services............................................................................................. 24913.1 Eigene Flexforms .................................................................................................................249
13.1.1 Mehrsprachigkeit....................................................................................................25013.1.2 Tabs ........................................................................................................................25113.1.3 Elemente.................................................................................................................25213.1.4 Flexform-Daten im Frontend..................................................................................256
13.2 Backend-Module..................................................................................................................25713.2.1 Dokumententypen für $this->doc ...........................................................................25713.2.2 TypoScript einer Seite auslesen..............................................................................25713.2.3 AJAX im Backend..................................................................................................257
13.3 Services................................................................................................................................25913.4 cli .........................................................................................................................................25913.5 Debugging............................................................................................................................260
13.5.1 debug ......................................................................................................................26013.5.2 debug_ordvalue ......................................................................................................26113.5.3 debug_trail..............................................................................................................26113.5.4 debugRows .............................................................................................................26113.5.5 devLog....................................................................................................................262
Teil III – Extbase und Fluid
14 Der neue Weg der Extension-Programmierung ................................................ 26514.1 Grundlagen der objektorientierten Programmierung............................................................267
14.1.1 Klassen und Objekte...............................................................................................26714.1.2 Vererbung von Klassen ..........................................................................................271
Inhalt
XIV
14.1.3 Kontrollierte Vererbung – abstrakte und finale Klassen......................................... 27314.1.4 Sichtbarkeiten: public, private und protected ......................................................... 27414.1.5 Interfaces................................................................................................................ 27514.1.6 Type Hints.............................................................................................................. 27714.1.7 Statische Methoden und Eigenschaften.................................................................. 27714.1.8 Namespaces............................................................................................................ 278
14.2 Neue Konzepte..................................................................................................................... 27914.2.1 Domain Driven Design........................................................................................... 28014.2.2 Model-View-Controller.......................................................................................... 28114.2.3 Modellierung.......................................................................................................... 28214.2.4 Gemeinsamens Vokabular – Ubiquitous Language................................................ 28214.2.5 Die Elemente des Modells...................................................................................... 285
15 Ein Rundgang durchs System............................................................................ 28715.1 Installation von Extbase und Fluid....................................................................................... 28715.2 Installation der Extension blog_example ............................................................................. 28915.3 Datenstruktur im Blog-Example .......................................................................................... 29115.4 Namenskonventionen........................................................................................................... 293
15.4.1 Verzeichnis- und Dateinamen ................................................................................ 29415.4.2 Klassennamen ........................................................................................................ 29415.4.3 Controller und Actions ........................................................................................... 295
15.5 Die Dateistruktur im Extension-Root-Verzeichnis .............................................................. 29515.5.1 Die Datei ext_emconf.php...................................................................................... 29615.5.2 Die Datei ext_tables.php ........................................................................................ 29715.5.3 Die Datei ext_localconf.php................................................................................... 30115.5.4 Die Dateien ext_tables.sql und ext_icon.gif ........................................................... 302
15.6 Die Verzeichnisstruktur ....................................................................................................... 30215.6.1 Das Verzeichnis Classes......................................................................................... 30315.6.2 Das Verzeichnis Configuration .............................................................................. 30415.6.3 Das Verzeichnis Module ........................................................................................ 30515.6.4 Das Verzeichnis Resources .................................................................................... 30515.6.5 Weitere Verzeichnisse............................................................................................ 305
15.7 Der prinzipielle Ablauf ........................................................................................................ 30515.7.1 Aufruf des Dispatchers (Schritt 1).......................................................................... 30615.7.2 Aufruf des Controllers (Schritt 2)........................................................................... 30915.7.3 Ansprechen des Respositorys (Schritt 3)................................................................ 30915.7.4 Zurückliefern der Blog-Objekte (Schritt 4) ............................................................ 30915.7.5 Das Objekt wird dem View zugeordnet (Schritt 5) ................................................ 31115.7.6 Rückgabe der Template-Ausgabe an den Controller (Schritt 6)............................. 31315.7.7 Rückgabe der Ausgabe an den Dispatcher (Schritt 7) ............................................ 31415.7.8 Rückgabe der Ausgabe an TYPO3 (Schritt 8)........................................................ 314
16 Entwicklung eines eigenen Plug-ins.................................................................. 31516.1 Aufbau einer minimal funktionstüchtigen Extension........................................................... 315
16.1.1 Extension-Key........................................................................................................ 31516.1.2 Verzeichnisse anlegen ............................................................................................ 316
Inhalt
XV
16.1.3 Die Datei ext_emconf.php......................................................................................31616.1.4 Die Dateien ext_localconf.php und ext_tables.php ................................................31716.1.5 Einrichten eines Standard-Controllers ....................................................................31816.1.6 Installieren der Extension und das erste Erfolgserlebnis ........................................319
16.2 Hinzufügen eines Views.......................................................................................................32016.3 Entitäten einführen ...............................................................................................................32216.4 Daten persistieren (Datenspeicher).......................................................................................324
16.4.1 Datenbankstruktur – die Datei ext_tables.sql .........................................................32516.4.2 Datenbankstruktur – das TCA ................................................................................329
16.5 Anlegen eines Repositorys ...................................................................................................33316.6 Anlegen einer neuen Action.................................................................................................335
16.6.1 Anlegen der Action addAction() ............................................................................33616.7 Daten per Formular eingeben und auswerten .......................................................................33716.8 Objekte aus dem Repository entfernen.................................................................................338
16.8.1 Zufügen der Action delete in der Konfiguration.....................................................33816.8.2 Anpassen der Template-Datei index.html...............................................................338
16.9 Update von Objekten............................................................................................................33916.9.1 Edit- und Update-Action hinzufügen......................................................................339
16.10 Der Query-Manager .............................................................................................................34116.11 Eingabevalidierung ..............................................................................................................34316.12 Validatoren...........................................................................................................................343
16.12.1 Vordefinierte Validatoren.......................................................................................34316.12.2 Eigene Validatoren .................................................................................................34416.12.3 Ausgabe der Fehler.................................................................................................34716.12.4 Optionale Argumente .............................................................................................347
16.13 Relationen zu anderen Tabellen ...........................................................................................34816.13.1 Erweiterung des TCA.............................................................................................34816.13.2 Die Domain-Klasse Tx_Simpleblog_Domain_Model_Post ...................................34916.13.3 Registrieren der Actions in der Datei ext_localconf.php ........................................35016.13.4 Erstellung des Post-Controllers ..............................................................................35016.13.5 Neue Templates und Template-Änderungen ..........................................................35316.13.6 Ändern der Blog-Identity........................................................................................35416.13.7 Aufruf der Extension im Frontend..........................................................................356
16.14 Relationen zu anderen Tabellen m:n ....................................................................................35616.15 Mehrsprachigkeit zufügen....................................................................................................36116.16 Konfiguration mittels TypoScript ........................................................................................36316.17 Backend-Module mit Extbase ..............................................................................................36516.18 Der Extbase-Kickstarter .......................................................................................................366
16.18.1 Installation des Extbase-Kickstarters......................................................................36716.18.2 Überblick über den Arbeitsbereich .........................................................................36816.18.3 Eingabe der Extension-Konfiguration ....................................................................36916.18.4 Modellierung ..........................................................................................................37016.18.5 Anlegen des Post-Objekts.......................................................................................37216.18.6 Anlegen des Tag-Objekts .......................................................................................37216.18.7 Relationen festlegen ...............................................................................................373
Inhalt
XVI
16.19 Weitere Extbase-Interna....................................................................................................... 37416.19.1 StoragePid .............................................................................................................. 37416.19.2 MVC-Request ........................................................................................................ 37616.19.3 FlashMessages realisieren ...................................................................................... 377
17 Die Fluid-Template-Engine.................................................................................. 37917.1 Vorbereitung ........................................................................................................................ 38017.2 Basissyntax und einfache Ausgabe ...................................................................................... 382
17.2.1 Arrays..................................................................................................................... 38217.2.2 Objekte................................................................................................................... 383
17.3 Fluid ViewHelper-Syntax .................................................................................................... 38417.3.1 Namespace (Namensraum)..................................................................................... 38417.3.2 Argumente.............................................................................................................. 385
17.4 ViewHelper-Übersicht ......................................................................................................... 38717.4.1 alias ........................................................................................................................ 38717.4.2 base ........................................................................................................................ 38817.4.3 cObject ................................................................................................................... 38817.4.4 count....................................................................................................................... 38917.4.5 cycle ....................................................................................................................... 38917.4.6 debug...................................................................................................................... 39017.4.7 else ......................................................................................................................... 39017.4.8 for........................................................................................................................... 39017.4.9 form........................................................................................................................ 39117.4.10 format..................................................................................................................... 40217.4.11 groupedFor ............................................................................................................. 40617.4.12 if ........................................................................................................................... 40717.4.13 image...................................................................................................................... 40817.4.14 layout...................................................................................................................... 40917.4.15 link ......................................................................................................................... 40917.4.16 render ..................................................................................................................... 41417.4.17 renderFlashMessages ............................................................................................. 41417.4.18 section .................................................................................................................... 41517.4.19 then......................................................................................................................... 41517.4.20 translate .................................................................................................................. 41517.4.21 uri ........................................................................................................................... 416
17.5 Erstellen eines eigenen ViewHelpers................................................................................... 41617.5.1 Der Dummytext-ViewHelper ................................................................................. 41717.5.2 Zugriff auf die übergebenen Argumente ................................................................ 41817.5.3 Zufügen von Argumenten ...................................................................................... 41917.5.4 Tag-basierende ViewHelper................................................................................... 41917.5.5 Der Variablen-Container ........................................................................................ 420
17.6 Verwendung von Fluid in klassischen Extensions ............................................................... 42117.7 Layouts und Partials............................................................................................................. 423
Register............................................................................................................................ 427
3
11 Grundlagen
1.1 Aufbau und Struktur von TYPO3
Um Extensions für TYPO3 entwickeln zu können, müssen Sie über den grundsätzlichen Aufbau von TYPO3 Bescheid wissen. Dazu gehört zum Beispiel, in welcher Reihenfolge TYPO3 die einzelnen Schritte, die nötig sind, um eine Webseite zu erstellen, abarbeitet. Der schematische Aufbau geht vom Webbrowser aus. Damit rufen Sie entweder das Ba-ckend oder das Frontend auf. Beide greifen wiederum auf die Extensions zu, die in dem System installiert sind. Selbst das CMS ist als Extension realisiert. Alle Extensions greifen über die Extension-API auf den TYPO3-Kern (Core) zu. Dieser beinhaltet nur die grund-legenden Funktionen. Der Kern, wie auch alle Extensions, sind in der Programmiersprache PHP geschrieben. Als Basis dienen ein Webserver (z.B. Apache, lighttpd, IIS) und eine Datenbank (z.B. MySQL, Oracle, PostreSQL). Es ist möglich, die TYPO3-Extension-API zu umgehen und beispielsweise Datenbankzugriffe nativ in PHP zu schreiben. Aber dieses „Zu-Fuß-Gehen“ ist nicht empfehlenswert. Über die API stehen Ihnen weitere Features wie Abstraktion, Validierungen etc. zur Verfügung. Um beim Beispiel Datenbankzugriff zu bleiben, über die API-Funktionen kann eine Extension auf verschiedenen Datenbank-systemen verwendet werden. Wenn Sie die mysql-Funktionen von PHP direkt verwenden, wird Ihre Extension auch nur mit MySQL zusammenarbeiten. Daher ist die API ein sehr wichtiger Schritt im Ablauf. Sehr interessant ist allerdings, was im Einzelnen denn nun genau passiert, wenn eine Web-seite im Frontend aufgerufen wird. Jeder Aufruf im Frontend beginnt mit der Datei in-dex.php im Rootverzeichnis (DocumentRoot). Ganz egal, ob Sie eine Seite tief im Seiten-baum aufrufen und wie viele Parameter Sie der URL anhängen, am Ende rufen Sie doch nur diese eine Datei auf. Das gilt auch beim Einsatz von Extensions wie realURL und CoolURI, die semantische URLs erzeugen. Durch die Direktiven der .htacces-Datei wird dennoch auf die index-php zugegriffen. In dieser ist der Pfad zur TypoScript-Library (PATH_tslib) hinterlegt, die damit inkludiert wird. Als Nächstes wird die Datei in-
1 Grundlagen
4
dex_ts.php aus der Extension cms eingebunden, die den Rest der Ablaufsteuerung über-nimmt. Ist diese nicht verfügbar, quittiert der Server die Anfrage mit einer Fehlermeldung und widmet sich anderen Dingen. In der index_ts.php kommt es zu folgendem Ablauf im Frontend-Rendering-Prozess: 1. Die Umgebungsparameter wie Betriebsystem, Webserver und Art der PHP-Unterstütz-
ung werden ermittelt. 2. Die Pfade zum typo3conf- und t3lib-Verzeichnis werden bestimmt. 3. Der Time-Tracker (PATH_t3lib.’class.t3lib_timetrack.php) startet. Der Time-Tracker
loggt die Parse-Zeiten und Kommentare. Diese werden im Admin-Panel zur Verfügung gestellt.
4. Die obligatorischen Klassen _t3lib_div, die diverse allgemeine Funktionen zur Ver-fügung stellt, und t3lib_extmgm, die das Extension-Handling durchführt, werden ge-laden.
5. Nun beginnt die Konfigurationsphase. Es wird eine Standardkonfiguration aus PATH_t3lib.config_default.php geladen. Dann wird die eigentliche Konfigurati-onsdatei typo3conf/localconf.php aufgerufen. Als Letztes werden noch die Konfi-gurationen aus den Extensions geladen. Diese befinden sich in den ext_
localconf.php-Dateien in den jeweiligen Extension-Verzeichnissen. Der Datenbank-zugriff aufgrund der Konfiguration wird überprüft. Ist auch die Extension cms korrekt geladen, kann es weiter gehen.
6. Wird als GET- oder POST-Parameter die eID übergeben, wird diese nun ausgewertet. Dazu ist ein Ausstiegspunkt definiert, der den Frontend-Rendering-Prozess abbricht. Der eID-Parameter kommt beispielsweise bei AJAX-Requests zum Tragen, wenn nicht die komplette Seite, sondern nur Teile des Inhalts benötigt werden. Der Parameter be-inhaltet die eine Klasse, die an dieser Stelle aufgerufen wird und die restliche Ausgabe erledigt. Diese Klasse lädt die eID-Helper-Klasse nach, die eine Datenbankunterstüt-zung zur Verfügung stellt und den möglichen Frontend-User definiert.
7. Wird der Vorgang nicht durch einen eID-Prozess abgebrochen, wird er fortgesetzt, in-dem folgende Frontend-Bibliotheken geladen werden:
PATH_tslib.’class.tslib_fe.php’Klasse für das TypoScript-basierte Frontend PATH_tslib.’class.tslib_page.php’Klasse für die Seitenfunktionen PATH_tslib.’class.tslib_userauth.php’Klasse für die Authentifizierung von FE-Usern PATH_tslib.’class.tslib_feuserauth.php’Klasse für die Frontend-Session und das Login PATH_tslib.’class.tslib_fe.php’Klasse für die Template-Verarbeitung PATH_tslib.’class.tslib_cs.php’Klasse für die Zeichenkonvertierung von und zu UTF-8
1.1 Aufbau und Struktur von TYPO3
5
8. Initialisierung und Befüllung des $TSFE-Objektes (TypoScript-Frontend). Erste Werte, mit denen es befüllt wird, sind einige GBVars (GET-/POST-Variablen): id, type,no_cache, cHash, jumpurl, MP und RDCT.
9. Bei gesetztem RDCT-Parameter wird mittels des zugehörigen MD5-Hashwertes der entsprechende Link aus der Datenbank geholt und eine Weiterleitung dahin ausgelöst.
10. Die Kompression wird aktiviert, sofern die Gzip-Kompression in der Variablen $TY-PO3_CONF_VARS[’FE’][’compressionLevel] gesetzt ist.
11. Initialisierung des Frontend-Users. Dazu wird die Session ausgelesen und überprüft, ob der User sich neu einloggen muss.
12. Überprüfung des Cookies auf den Wert preBeUser. Ist dieser gesetzt, wird geprüft, ob ein Backend-User angemeldet ist, der dann initialisiert wird. Ist dies erfolgreich ge-schehen, werden weitere Klassen für BE-Funktionalitäten nachgeladen:
PATH_tslib.’class.tslib_befunc.php’Klasse für Standardfunktionen des Backends. PATH_tslib.’class.tslib_userauthgroup.php’Klasse zur Authentifizierung und Initialisierung von BE-Usergroups PATH_tslib.’class.tslib_beauthuser.php’Klasse zur Authentifizierung von BE-Usern PATH_tslib.’class.tslib_beauthuser.php’Klasse zur Authentifizierung von BE-Usern (TSFE-spezifisch)
13. Wurde ein Workspace-Preview angefordert, wird dieses nun initialisiert. 14. Bestimmung der Page-ID (pid). Da jedes Element, jeder Datensatz einer pid zugeordnet
ist, ist sie die zentrale Komponente im Rendering-Prozess. 15. Einlesen der $TCA (Table Configuration Array). Das TCA definiert die (veränderbaren)
Datenbanktabellen und ihre Beziehung untereinander. Darüber hinaus definiert sie die Darstellung der einzelnen Formularelemente der Felder im Backend und im FE-Editing.
16. Verfügbarkeit der Seite im Cache wird geprüft. 17. Überprüfung, ob das config-Array existiert. Gegebenenfalls wird es nachgeladen. 18. POST-Variablen werden in einen vorher definierten Zeichensatz konvertiert. 19. Setzen der Sprache im Frontend und einstellen der Locales (Datumsformat, Zeit, Wäh-
rung etc.) 20. Ist JumpUrl aktiviert und die aktuelle Seite per TypoScript-Typolink als externe Seite
definiert, wird nun die ZielURL ermittelt. Die Weiterleitung selbst wird erst in Schritt 27 erfolgen. Dadurch ist es möglich, Statistiken zu erhalten, wie oft beispielsweise ein Link angeklickt wurde. Die JumpUrl-Konfiguration erfolgt im Setup des Templates: config.jumpurl_enable = 1 (oder 0)
config.jumpurl_mailto_disable = 0 (oder 1)
1 Grundlagen
6
21. Verarbeitung der Formulardaten. Dies schließt Formulare im Frontend sowie E-Mail-Formulare mit ein.
22. Die Seite wird generiert, aber noch nicht ausgegeben. Ist sie bereits im Cache vorhan-den, wird die Version aus dem Cache verwendet, ansonsten wird sie neu gerendert, also zusammengebaut.
23. Einfügen weiterer Files. Beispielsweise Dateien, die über PHP_SCRIPT_INT definiert wurden (includeLibs).
24. Wurde keine JumpUrl definiert, erfolgt nun der Output der Seite. Alle Inhalte und Skripte werden im $TSFE-Objekt zusammengefügt und über echo ausgegeben. Wurde allerdings die Gzip-Komprimierung aktiviert, werden die Inhalte nur zusammengefügt, aber noch nicht ausgegeben. Das erfolgt dann in Schritt 31.
25. Die mögliche Frontend-Session, die in Schritt 11 ermittelt wurde, wird abgespeichert. 26. Die Statistik wird erstellt. Zum Beispiel wird die Parse-Zeit ermittelt. 27. Wurde eine JumpUrl definiert, wird auf diese nun weitergeleitet. 28. Da es möglich ist, Seiten auch statisch zu publizieren, wird dies hier durchgeführt, falls
die Konfiguration dies verlangt. 29. Das Admin-Panel wird an den Quellcode angehängt und ausgegeben, sofern es akti-
viert wurde und der angemeldete Backend-Benutzer die Rechte dazu hat. 30. Bei aktiviertem Deugging werden alle Debug-Messages ausgegeben. 31. Ausgabe der Daten, falls Gzip-Kompression aktiviert ist.
1.2 Aufbau einer Extension
Eine Extension kann aus einem oder mehreren Abschnitten bestehen. Die Frontend-Ausgabe besteht (in der Regel) aus einem Plug-in. Davon können durchaus mehrere in ei-ner Extension existieren. Sie liegen in eigenen Verzeichnissen mit der Bezeichnung p1#, wobei # für eine vorlaufende Nummer steht. Plug-ins können auf die TypoScript-Konfiguration zurückgreifen oder aber direkt konfiguriert werden, sofern ein Konfigurati-onsformular implementiert wird. Backend-Module dagegen integrieren sich in das Haupt-menü des Backends und geben keine Ausgabe an das Frontend weiter. Sie sind in Unter-verzeichnissen mit der Bezeichnung mod# organisiert. Auch Services können in einer Extension existieren, um Funktionen bereitzustellen. Für AJAX-Requests und ähnliche Aufgaben können Skripte hinzugefügt werden, die über den eID-Parameter aufgerufen werden können und die meisten Funktionalitäten des TYPO3-Cores umgehen. Nur der Da-tenbankzugriff und das FEuser-Objekt sind hier verfügbar. Eine Dokumentation darf eben-falls nicht fehlen.
1.3 Arten und Einteilung von Extensions
7
1.3 Arten und Einteilung von Extensions
Es gibt drei Arten von Extensions: Lokale Extensions Globale Extensions Systemextensions
Die Reihenfolge spiegelt die Priorität wider. Ist eine Extension also beispielsweise lokal und global installiert, wird die lokale Version verwendet, da sie die höhere Priorität besitzt. Um Extensions etwas zu ordnen, sind sie in verschiedene Kategorien eingeteilt.
Backend Extensions, die im Backend zum Tragen kommen, aber keinen eigenen Menüpunkt im Hauptmenü besitzen. Sie stellen in der Regel Erweiterungen bestehender Funktionalitäten oder Tools dar. Ein Beispiel ist rtehtmlarea.
Backend-Modul Extensions mit einem eigenen Menüpunkt, also einem eigenen Modul. Als Beispiel wäre hier quixplorer zu nennen.
FrontendErweiterungen für das Frontend, die nicht unbedingt eine eigene Ausgabe erzeugen, diese aber durchaus beeinflussen und verändern können. Die bekannteste Extension dieser Art ist die css_styled_content.
Frontend-Plug-in Eine Extension, die ein eigenes Plug-in mitbringt und eine Ausgabe im Frontend erzeugt. Eine der bekanntesten Extension dieser Kategorie ist tt_news.
Services Services stellen Dienstleistungen und Funktionalitäten für andere Extensions bereit. Ein Service kann beispielsweise Daten über externe Schnittstellen weiterverarbeiten.
Documentation Diese Extensions dienen zur Bereithaltung von Dokumentationen und Manuals. Diese werden in der Regel als OpenOffice-Dokumente bereitgestellt.
ExamplesTutorials und Beispiele für TYPO3 und Extensions.
427
Register
$$BE_USER 91 $EM_CONF[$_EXTKEY] 46 $extpath 67 $GLOBALS 82 $GLOBALS['TSFE']->fe_user->user 245 $GLOBALS['TYPO3_DB'] 141 $MCONF 50 $TCA 53 $temp_TBE_MODULES 67 $this->content 79
[[Passthrough] 36
__GET 165 _GETset 165 _GP 166 _POST 166
AAbmessungen 201 absRefPrefix 232 abstract 274 abstrakte Klasse 273 Action anlegen 335 additionalCSS 228 additionalHeaderData 224, 228, 232 additionalJavaScript 224 addModule() 66
addModulePath() 66 addSlashesOnArray 186 addTCAcollumns() 54 Aggregate 285 AJAX 114, 205, 257 AJAX-Dispatcher 258 AJAX-Request 207 all 232 anchorPrefix 233 applicationData 233 Applikationsschicht 281 Arbeitsfläche 201 array_merge 187 array_merge_recursive_overrule 187 array2json 188 array2xml 188 arrayToLogString 189 ATagParams 233 Attribute 268 Ausgabe 103
BBackend User Object 91 Backend-Flexform 300 Backend-Formulare 34, 82 Backend-Modul 40 Backend-Modul (Extbase) 365 baseUrl 234 baseUrlWrap 215, 234 Basisdatei 206 Bearbeitungssymbole 84
Register
428
BEER3 380 Berechtigungsprüfung 75 Berlin Manifesto 266 Berliner Transition Days 379 beUserLogin 234 bigDoc 76 Bilder 101, 104, 199 Bildupload 60 Blog 26 Blog-Example 287
CcacheExpires 209 calcAge 195 calcParenthesis 171 callUserFunction 166 CGL 9 Changelog 22 Checkbox single 35 Checkbox, 4 Boxes in a Row und 10 Boxes in two Rows 35 Checkboxen 57 checkEmail 195 cImage 211 class.tx_extkey_pi#.php 52 cleanFormName 211 cleanIntArray 147 cleanIntList 147 clearPageCacheContent 209 clearPageCacheContent_pidList 209 cli 259 Clickmenu items 41 clientInfo 167, 234 cliKey 259 cmpFQDN 171 cmpIP 172 cObj 151 cObjGet 211 cObjGetSingle 212 Codeformatierung 11 codeString 195 compat_version 167 compileSelectedGetVarsFromArray 168
Conditions 17, 91 conf.php 50 content 235 Content-Element 39 Controller 281 Convention over Configuration 294 convUmlauts 172 Copyright 12 css_styled_content 96 CSS-Datei 86 csvValues 172 ctrl-Bereich 54 currentPageUrl 212
DDatabase Relation 36 Date und Date Time 35 Dateistruktur 12 Dateisystem 155 Daten persistieren 324 Datenbank 28 Datenbank-Abstraktions-Layer 141 Datenbankfelder 29 Datenbank-Handler 141 Datenbankstruktur 25 Datenbanktabellen 34 DBAL 141 DBgetDelete 151 DBgetInsert 151 DBgetUpdate 152 debug 260 Debug 17 debug_lastBuiltQuery 147 debug_ordvalue 261 debug_trail 261 Debugging 260 debugRows 261 defaultBodyTag 235 defVals 82 deHSCentities 173 Destruktor 271 devLog 262 Dienste 42
Register
429
dirname 155 Dispatcher 306 Dokumentation 133 Dokumententypen 257 Domain Driven Design 280, 291
Aggregate 285 Entity 285 Factory 286 Repository 286 Service 285 Ubiquitous Language 282 Value Object 285
domainStartPage 235 Domänenschicht 281
Eefempty Extension 380 eID 114, 205 enableFields 153 encryptEmail 196 Entitäten einführen 322 Entity 285 escapeStrForLike 146 exec_DELETEquery 143 exec_INSERTquery 143 exec_SELECT_mm_query 142 exec_SELECT_queryArray 141 exec_SELECTgetRows 142 exec_SELECTquery 141 exec_UPDATEquery 143 expandList 173 explodeUrl2Array 190 ext_conf_template.txt 80, 244 ext_emconf.php 27, 45, 296 ext_icon.gif 302 ext_localconf.php 53, 205, 301 ext_tables.php 53, 66, 297 ext_tables.sql 54 ext_tables_static+adt.sql 55 Extbase 266 Extbase-Kickstarter 366 extdeveval 14, 133 Extend existing Tables 36
extends 271 Extension-ID 205 Extension-Key 8, 315 Extension-Manager 244 ExtJS 119 extTarget 236
FFactory 286 Features 24 Fehlerausgabe 347 Feldtyp 81 fePreview 236 Field name 29 fileResource 213 Files 36 finale Klasse 273 fixed_lgd 173 fixed_lgd_pre 174 fixWindowsFilePath 155 FlashMessages 377 Flex 36 Flexform 125, 242, 249 FLOW3 265 Fluid 266, 379
Argumente 385 Arrays 382 Basissyntax 382 Layout 423 Namespace 384 Objekte 383 Partial 423 Verwendung in klassischen Extensions 421 ViewHelper-Syntax 384
formatForTextarea 174 Formatierung 11 formatSize 156 Formulardaten 243 Formulardaten eingeben 337 Formulare 34, 251 Formularfelder 253 Frontend-Bibliotheken 4 Frontend-Plug-ins 37
Register
430
Frontend-Rendering-Prozess 4, 205 Frontend-User 245 fullQuoteArray 146 fullQuoteStr 145
GGeneral Info 27 generateRandomBytes 174 get_cache_timeout 210 get_dirs 156 get_tag_attributes 175 getAllFilesAndFoldersInPath 157 getBrowsableTree() 72 getFileAbsFileName 158 getFilesInDir 158 getHostname 168 getImgResource 213 getIndpEnv 168 getLLL 230 getMailTo 215 getSlidePids 213 getThisUrl 168 getTypoLink 216 getTypoLink_URL 216 getURL 159 GIFBUILDER 104 gifBuilderTextBox 214 Globale Extensions 7 GPL 12 GraphicsMagick 200 Graustufen 202
HHauptmodul 65 header type 39 Hook 123 HTMLcaseshift 196 htmlspecialchars_decode 175 HTML-Template 109 HTML-Templates 103 http_makelinks 217
IIcon 83 id 236 imageLinkWrap 217 ImageMagick 200 imagesOnPage 237 Implementierung 269 implodeArrayForUrl 175 implodeAttributes 176 inArray 190 Infrastrukturschicht 281 Ingmar Schlecht 366 initialisieren 75 inList 176 Input-Felder 58 Installation von Extbase 287 Installation von Fluid 287 instanceof-Operator 272 Instanziieren 268 int_from_ver 177 Integer, 10 -1 000 35 Integrate in existing Modules 41 Interface 275 intInRange 177 intTarget 237 intval_positive 178 isAbsPath 159 isAllowedAbsPath 159 isFirstPartOfStr 178
JJavaScript 115, 206 Jochen Rau 266 JSeventFuncCalls 225 JSON 122
KKapselung 274 Kategorie 80 keywords 196 Kickstarter 26 Klassen 267 Klassenzugehörigkeit 272
Register
431
Kommentare 16 Konstanten 43 Konstruktor 269 Konzept 23
Llang 237 lastImageInfo 238 linebreaks 197 Link 35 linkThisScript 169 linkThisUrl 169 Liste 85 Listenansicht 102 Listenausgabe 99 listQuery 144 listView 98 locallang.xml 51, 56 locallang_db.xml 56, 250 locallang_mod.xml 51 locationHeaderUrl 169 loginUser 238 Lokale Extensions 7
Mmailto_makelinks 218 mailto-Link 106 makeInstance 170 makeInstanceService 170 Marker 109 md5int 178 mediumDoc 76 Mehrsprachigkeit 250, 361 Methoden 268 Methodendeklaration 268 Methodenrumpf 269 milliseconds 179 minifyJavaScript 225 mkdir 160 mkdir_deep 160 M-M-Relationen 62 Model 281 Modellierung 282
modifyHTMLColor 179 modifyHTMLColorAll 179 Modul 40 Modulinhalt 79 MVC (Model-View-Controller) 281 MVC-Request Objekt 376
NNamenskonventionen 293 Namespace 10, 278 Navigationsbaum 65, 69 new-Operator 269 no_cache 238 noDoc 76 normalizeIPv6 180 Not editable, only displayed 36
OObjekte 267 objektorientierte Programmierung 267 OpenOffice 135 Optionale Argumente 347
Ppage 239 Page-Browser 87 phpDoc 12, 21 PHP-Shell 259 PHP-Syntax 15 PHP-Tags 11 PHPTAL 379 pi_exec_query 148 pi_getClassName 229 pi_getFFvalue 256 pi_getLL 230 pi_getPageLink 218 pi_getPidList 149 pi_getRecord 150 pi_linkToPage 218 pi_linkTP 219 pi_linkTP_keepPIvars 219 pi_linkTP_keepPIvars_url 219 pi_list_browseresults 221
Register
432
pi_list_header() 101 pi_list_linkSingle 222 pi_list_makelist 222 pi_list_modeSelector 223 pi_list_searchBox 223 pi_openAtagHrefInJSwindow 220 pi_prependFieldsWithTable 150 pi_setClassStyle 229 Planung 23 Plug-in 37 Präsentationsschicht 281 prefixLocalAnchorsWithScript 220 print_array 190 printError 239 private 274 processParams 197 protected 274 public 274
QQuery-Manager 341 quoteJSvalue 226 quoteStr 145
RRadiobuttons 36 rawUrlEncodeJS 226 readLLfile 231 Registrierung 8 Relation 348 Relation m
n 356 removeArrayEntryByValue 191 removePrefixPathFromList 160 removeXSS 180 Repository 23, 286
anlegen 333 Objekte entfernen 338 Update von Objekten 339
resolveBackPath 161 revExplode 180 rm_endcomma 181 rmdir 161
rmFromList 170 rootLine 240 RTE 105
SScope Resolution Operator 272 searchQuery 144 Sebastian Kurfürst 379 Seitenbaum 72 Selectorbox 35 self 278 Services 42, 259, 285 Servicetyp 43 Session-Key 246 set_cache_timeout_default 210 set_no_cache 210 setCSS 229 setJS 227 Setup 43 shortMD5 181 showRecordFieldList 56 Signatur 268 singleView 98 siteScript 240 slashArray 191 smallDoc 76 Smarty 379 split_fileref 162 split_tag_attributes 181 splitCalc 182 splitGroupOrderLimit 145 Sprachdatei 102, 250 sql_fetch_assoc 143 sql_fetch_row 144 SQL-Abfrage 78, 131 static 278 Static TypoScript code 43 Statische Eigenschaften 277 Statische Methoden 277 stdWrap 214 StdWrap 110 StoragePid 374 String input 34
Register
433
String input, advanced 34 strtolower 183 strtoupper 183 Sub- or Mainmodule 40 Subpart 109 substUrlsInPlainText 183 Subversion 13 SVN 13 sysLog 171 Systemextensions 7 SystemLog 92
Tt3lib_div 155 t3lib_extMgm 66 t3lib_scbase.php 75 t3lib_treeview 71 Tabellen 29 Table Configuration Array 53 Tabs 251 tca.php 56 template 76 Templating-Klasse 76 tempnam 162 TER 137 testInt 184 Text 204 Text area 34 Text area with RTE 34 Text area, no wrapping 35 Textfelder mit RTE 61 this 270 tmpl->config, tmpl->setup 241 trimExplode 184 TrueType 204 TSconfig 43 tslib_eidtools 121 tslib_pibase 96, 148 type 241 Type Hint 277 TYPO3 5.x 265 TYPO3 Coding Guidelines 9 TYPO3_CONF_VARS 241
TYPO3-Kern 3 TypoScript 43, 244, 257 TypoScript Konfiguration 363
UUbiquitous Language 282 UML 282 uniqueHash 198 uniqueList 185 uniqueString 242 unlink_tempfile 162 Upload 137 upload_copy_move 162 upload_to_tempfile 163 uploads/extkey 60 UpperCamelCase 268, 294 URLqMark 198 User-TS 91
VValidator 343
eigene Validatoren 344 vordefinierte Validatoren 343
validEmail 185 Validierung 343 Validierung mit eval 58 validIP 185 validIPv4 186 validIPv6 186 Value Object 285 Vererbung 271 verifyFilenameAgainstDenyPattern 163 Versionsnummer 44, 137 Verzeichnis Classes 303 Verzeichnis Configuration 304 Verzeichnis Module 305 Verzeichnis Resources 305 Verzeichnisstruktur 302 View 281 View hinzufügen 320 View result 44 view_array 192 ViewHelper
Register
434
alias 387 base 388 cObject 388 count 389 cycle 389 debug 390 else 390 Erstellung eines eigenen 416 for 390 form 391 form.checkbox 393 form.error 394 form.hidden 394 form.password 395 form.radio 396 form.select 397 form.submit 399 form.textarea 400 form.textbox 401 form.upload 401 format 402 format.crop 402 format.currency 403 format.date 404 format.html 404 format.nl2br 405 format.number 405 format.padding 405 format.printf 406 groupedFor 406 if 407 image 408
layout 409 link 409 link.action 409 link.email 411 link.external 412 link.page 413 render 414 renderFlashMessages 414 section 415 then 415 translate 415 uri 416
WWeblog 26 wrapJS 227 writeFile 164 writeFileToTypo3tempDir 164
XXCLASS 15 xml2array 192 xml2tree 193 xmlGetHeaderAttribs 194 XML-Response 206 XML-Struktur 126
ZZeichensatz 11 Zeilenumbruch 11 Zuschneiden 201