Was ist TypoScript?TypoScriptist 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 flexibelNachteil:TypoScript bietet eine gewisse Lernhürde
Schritt 2: StatischenText aus HTML Template ausgebenpage = PAGEpage.10 = TEMPLATEpage.10.template = FILEpage.10.template.file = fileadmin/htmltemplate.htmlsetupHello 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: HTMLTemplate mit Marker ausgebenpage = PAGEpage.10 = TEMPLATEpage.10 {template = FILEtemplate.file = fileadmin/htmltemplate.htmlmarks.MARKER = TEXTmarks.MARKER.value = Ichbinein Marker}setupHello WorldIch bin ein Marker…Hello World<br />Ich bin ein Marker…<html>
Was sind TypoScriptConditions?Conditionssind Bedingungen, die bei Erfüllung eine bestimmte TS Konfiguration zulassen oder ignorieren.Gängige Bedingungen:browser, IP, month, usergroup, PIDupinRootline, globalVar, userFunc
Schritt 6: Conditionsnie innerhalb von geschweiften Klammernpage.10 = TEXTpage.10 {value = lala[globalVar = GP:L=1]value = lulu[end]}page.10 = TEXTpage.10 {value = lala}[globalVar = GP:L=1]page.10.value = lulu[end]setupsetup# immer lalalala# index.php?id=1lala# index.php?id=1&L=1lulu<html><html>
13.
Schritt 7: WeitereCondition Beispiele (month)page.10 = TEXTpage.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]setupconstants# SeptemberEs ist Winter# AugustEs ist Sommer<html><html>Info: Conditionskönnen auch in den constants verwendet werden
14.
Schritt 8: WeitereConditions Beispiele (IP)page.10 = TEXTpage.10.value = Diese Seite ist noch in der Entwicklung[IP = 192.168.*.*]page.10 = TEMPLATEpage.10.template.file = fileadmin/template.html...[end]setup# IntranetAnythingelse# InternetDiese Seite ist noch in der Entwicklung<html><html>
15.
Schritt 9: WeitereConditions Beispiele (globalVar)# clearsubpartpage.10.subparts.RECHTESPALTE = COApage.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: WeitereConditions Beispiele (userFunc)[userFunc = user_test]# do something[else]# do something else[end]setupfunctionuser_test() { if (date('m') == '01') {returntrue; } else {returnfalse; }}<php>…include 'fileadmin/userFunc.php';…localconfInfo: Keine Klassen, nur Funktionen
CASE in TypoScriptÄhnlichder 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 ZSchnelle Abarbeitung möglich
19.
Schritt 11: CASEanwenden# page.subtitle could be 1 or 2 or 3lib.object = CASElib.object {key.field = subtitle default = TEXTdefault.value = Das isteineStandardseite 2 = TEXT 2.value = Hierfindensie die besten News 3 = TEXT 3.value = HierzeigenwirIhnentolleFotos}Page.10.marks.OBJECT < lib.objectsetup
Was ist eineIF 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
Schritt 17: AndererInhalt wenn Feld leer (COA: Wenn, Dann)lib.title COAlib.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}setupSeite 1Kein Titel für diese Seitevergeben
28.
Schritt 18: Praxisbeispiel– Anderes HTML Template bei Wert in rechter Spaltetemp.maintemplate = COAtemp.maintemplate { # ifthereiscontent in therightcol 10 = COA 10 {if.isTrue.numRows < styles.content.getRight 10 = TEMPLATE 10 {template = FILEtemplate.file = fileadmin/2cols.html } } # ifthereis NO content in therightcol 20 = COA 20 {if.isFalse.numRows < styles.content.getRight 10 = TEMPLATE 10 {template = FILEtemplate.file = fileadmin/1col.html } }}setup