alexander ebner patrick bernhard ulbrich · pdf file1.1 aufbau und struktur von typo3 ... 1.5...

26
PROFESSIONELLE FRONTEND- UND BACKEND- PROGRAMMIERUNG alexander EBNER patrick LOBACHER bernhard ULBRICH TYPO3 EXTENSIONS Mit Extbase und Fluid

Upload: truongkhue

Post on 05-Feb-2018

227 views

Category:

Documents


0 download

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