4. Was ist TypoScript? TypoScript ist eine Konfigurationssprache die TYPO3 anweist, Daten zu verarbeiten und anzuzeigen (vergleichbar mit XML). Diese Konfigurationssprache ist eines der Hauptmerkmale bei der Unterscheidung von TYPO3 zu einem anderen CMS. Vorteil: TYPO3 wird somit extrem flexibel Nachteil:TypoScript bietet eine gewisse Lernhürde
5. Schritt 1: Statischen Text ausgeben page = PAGE page.10 = TEXT page.10.value = Hello World setup Hello World Hello World <html>
6. Schritt 2: Statischen Text aus HTML Template ausgeben page = PAGE page.10 = TEMPLATE page.10.template = FILE page.10.template.file = fileadmin/htmltemplate.html setup Hello World <html> <head> … </head> <body> Hello World </body> </html> <html> Info: TEMPLATE generiert HTML Head und erlaubt ersetzen von Subparts und Markern
7. Schritt 3: HTML Template mit Marker ausgeben page = PAGE page.10 = TEMPLATE page.10 { template = FILE template.file = fileadmin/htmltemplate.html marks.MARKER = TEXT marks.MARKER.value = Ichbinein Marker } setup Hello World Ich bin ein Marker … Hello World <br /> Ich bin ein Marker … <html>
8. Schritt 4: Konstanten nutzen page = PAGE page { 10 = TEXT 10.value = {$var} 20 = TEXT 20.value = {$var} 30 < .10 … var = Hello World setup constants HelloWorldHelloWorldHello World HelloWorldHelloWorldHello World <html>
10. Was sind TypoScriptConditions? Conditions sind Bedingungen, die bei Erfüllung eine bestimmte TS Konfiguration zulassen oder ignorieren. Gängige Bedingungen: browser, IP, month, usergroup, PIDupinRootline, globalVar, userFunc
11. Schritt 5: Conditions nutzen page.10 = TEXT page.10.value = Hello World [globalVar = GP:L=1] page.10.value = Hallo Welt [end] setup # index.php?id=1 Hello World # index.php?id=1&L=1 Hallo Welt <html> <html> Info: Conditionsnie innerhalb von geschweiften Klammern nutzen
12. Schritt 6: Conditions nie innerhalb von geschweiften Klammern page.10 = TEXT page.10 { value = lala [globalVar = GP:L=1] value = lulu [end] } page.10 = TEXT page.10 { value = lala } [globalVar = GP:L=1] page.10.value = lulu [end] setup setup # immer lala lala # index.php?id=1 lala # index.php?id=1&L=1 lulu <html> <html>
13. Schritt 7: Weitere Condition Beispiele (month) page.10 = TEXT page.10.value = {$var} [month = 4,5,6,7,8] var = Es istSommer [end] [month = 9,10,11,12,1,2,3,4] var = Es ist Winter [end] setup constants # September Es ist Winter # August Es ist Sommer <html> <html> Info: Conditionskönnen auch in den constants verwendet werden
14. Schritt 8: Weitere Conditions Beispiele (IP) page.10 = TEXT page.10.value = Diese Seite ist noch in der Entwicklung [IP = 192.168.*.*] page.10 = TEMPLATE page.10.template.file = fileadmin/template.html ... [end] setup # Intranet Anythingelse # Internet Diese Seite ist noch in der Entwicklung <html> <html>
15. Schritt 9: Weitere Conditions Beispiele (globalVar) # clearsubpart page.10.subparts.RECHTESPALTE = COA page.10.subparts.RECHTESPALTE { 10 = TEXT 20 = TEXT 30 = TEXT } # showif on PID 1 [globalVar = TSFE:id=1] page.10.subparts.RECHTESPALTE.10.value = Du bist auf Home [end] # ifnewsdetailisshown [globalVar = GP:tx_ttnews|tt_news > 0] page.10.subparts.RECHTESPALTE.20.value = News poweredby TYPO3 [end] # if powermail mail was sent [globalVar = GP:tx_powermail_pi1|uid40 = *] page.10.subparts.RECHTESPALTE.10.value = Mail wurde abgesendet! [end] setup
16. Schritt 10: Weitere Conditions Beispiele (userFunc) [userFunc = user_test] # do something [else] # do something else [end] setup functionuser_test() { if (date('m') == '01') { returntrue; } else { returnfalse; } } <php> … include 'fileadmin/userFunc.php'; … localconf Info: Keine Klassen, nur Funktionen
18. CASE in TypoScript Ähnlich der SWITCH Funktion in PHP, kann man mit CASE einen Parameter auf verschiedene Werte vergleichen. Sinn: ist A gleich B, dann X, wenn nicht, ist A gleich C, dann Y, wenn nicht,ist A gleich D, dann Z Schnelle Abarbeitung möglich
19. Schritt 11: CASE anwenden # page.subtitle could be 1 or 2 or 3 lib.object = CASE lib.object { key.field = subtitle default = TEXT default.value = Das isteineStandardseite 2 = TEXT 2.value = Hierfindensie die besten News 3 = TEXT 3.value = HierzeigenwirIhnentolleFotos } Page.10.marks.OBJECT < lib.object setup
20. Schritt 12: CASE anwenden (von css_styled_content) # wrap header of a content element … 10 = CASE 10 { key.field = header_layout 1 = TEXT 1.fontTag = <h1>|</h1> 2 < .1 2.fontTag = <h2>|</h2> 3 < .1 3.fontTag = <h3>|</h3> } … setup
21. Schritt 13: CASE anwenden (von powermail) object = CASE object { key.data = TSFE:fe_user|sesData|powermail_5345|uid34 default = TEXT default.value = Sehr geehrte Frau Herr = TEXT Herr.value = Sehr geehrter Herr } plugin.tx_powermail_pi1.dynamicTyposcript.test < object setup Details: http://www.typo3.net/index.php?id=13&action=list_post&tid=78897
24. Was ist eine IF Abfrage in TypoScript? TypoScriptIF lässt sich nur bedingt mit einer IF-Abfrage in PHP Vergleichen. Annähernd lassen sich jedoch auch hier bedingte Ausführungen von TypoScript realisieren. Gängige IF Statements in TypoScript: isTrue, isFalse, isPositive, isGreaterThan, isLessThan, equals, isInList, value, negate, directReturn
25. Schritt 15: Wrap immer vorhanden!? # title: lib.title = TEXT lib.title.field = title lib.title.wrap = <b>Titel: |</b> # title: Seite1 lib.title = TEXT lib.title.field = title lib.title.wrap = <b>Titel: |</b> setup setup Titel: Titel: Seite1 Info: Leerzeichen im Wrap mit noTrimWrap
26. Schritt 16: Wrap nur wenn Inhalt (Wenn) # title: Seite1 lib.title = TEXT lib.title { field = title field.wrap = <b>Titel: |</b> if.isTrue.field = title } # title: lib.title = TEXT lib.title { field = title field.wrap = <b>Titel: |</b> if.isTrue.field = title } setup setup Titel: Seite1
27. Schritt 17: Anderer Inhalt wenn Feld leer (COA: Wenn, Dann) lib.title COA lib.title { 10 = TEXT 10.field = title 10.if.isTrue.field = title 20 = TEXT 20.value = Kein Titel für diese Seite vergeben 20.if.isFalse.field = title } setup Seite 1 Kein Titel für diese Seitevergeben
28. Schritt 18: Praxisbeispiel – Anderes HTML Template bei Wert in rechter Spalte temp.maintemplate = COA temp.maintemplate { # ifthereiscontent in therightcol 10 = COA 10 { if.isTrue.numRows < styles.content.getRight 10 = TEMPLATE 10 { template = FILE template.file = fileadmin/2cols.html } } # ifthereis NO content in therightcol 20 = COA 20 { if.isFalse.numRows < styles.content.getRight 10 = TEMPLATE 10 { template = FILE template.file = fileadmin/1col.html } } } setup