TYPO3 TypoScript: IF, CASE, CONDITIONS

  • Published on
    19-May-2015

  • View
    10.471

  • Download
    0

Embed Size (px)

DESCRIPTION

in2code TYPO3: Ausfhrliche TypoScript Beispiele zu if-Bedingungen, CASE und Conditions mit Praxisbeispielen

Transcript

<p>IF, CASE, CONDITION TypoScript</p> <p>IF, CASE, CONDITIONTypoScriptIn2code.Wir leben TYPO3In2code.deWir leben TYPO3TypoScript EinfhrungConditionsCASEIFLinksIn2code.deWir leben TYPO3TypoScript EinfhrungIn2code.deWir leben TYPO3Was 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 flexibelNachteil: TypoScript bietet eine gewisse LernhrdeIn2code.deWir leben TYPO3page = PAGEpage.10 = TEXTpage.10.value = Hello WorldHello World</p> <p>Hello World</p> <p>setupSchritt 1: Statischen Text ausgebenIn2code.deWir leben TYPO3page = PAGEpage.10 = TEMPLATEpage.10.template = FILEpage.10.template.file = fileadmin/htmltemplate.htmlHello World</p> <p>Info: TEMPLATE generiert HTML Head und erlaubt ersetzen von Subparts und Markern</p> <p>Hello World</p> <p>setupSchritt 2: Statischen Text aus HTML Template ausgebenIn2code.deWir leben TYPO3page = PAGEpage.10 = TEMPLATEpage.10 {template = FILEtemplate.file = fileadmin/htmltemplate.htmlmarks.MARKER = TEXTmarks.MARKER.value = Ich bin ein Marker}Hello WorldIch bin ein Marker</p> <p>Hello World<br />Ich bin ein Marker</p> <p>setupSchritt 3: HTML Template mit Marker ausgebenIn2code.deWir leben TYPO3page = PAGEpage {10 = TEXT10.value = {$var}20 = TEXT20.value = {$var}30 &lt; .10</p> <p>setupHello WorldHello WorldHello World</p> <p>Hello WorldHello WorldHello World</p> <p>var = Hello World</p> <p>constantsSchritt 4: Konstanten nutzenIn2code.deWir leben TYPO3TypoScript ConditionsIn2code.deWir leben TYPO3Was sind TypoScript Conditions?Conditions sind Bedingungen, die bei Erfllung eine bestimmte TS Konfiguration zulassen oder ignorieren.Gngige Bedingungen:browser, IP, month, usergroup, PIDupinRootline, globalVar, userFuncIn2code.deWir leben TYPO3page.10 = TEXTpage.10.value = Hello World</p> <p>[globalVar = GP:L=1]page.10.value = Hallo Welt[end]Info: Conditions nie innerhalb von geschweiften Klammern nutzen# index.php?id=1Hello World</p> <p>setup# index.php?id=1&amp;L=1Hallo Welt</p> <p>Schritt 5: Conditions nutzenIn2code.deWir leben TYPO3page.10 = TEXTpage.10 {value = lala[globalVar = GP:L=1]value = lulu[end]}# immer lalalala</p> <p>setup# index.php?id=1lala</p> <p># index.php?id=1&amp;L=1lulu</p> <p>page.10 = TEXTpage.10 {value = lala}</p> <p>[globalVar = GP:L=1]page.10.value = lulu[end]</p> <p>setupSchritt 6: Conditions nie innerhalb von geschweiften KlammernIn2code.deWir leben TYPO3page.10 = TEXTpage.10.value = {$var}</p> <p>setupInfo: Conditions knnen auch in den constants verwendet werden# SeptemberEs ist Winter# AugustEs ist Sommer</p> <p>[month = 4,5,6,7,8]var = Es ist Sommer[end][month = 9,10,11,12,1,2,3,4]var = Es ist Winter[end]</p> <p>constants</p> <p>Schritt 7: Weitere Condition Beispiele (month)In2code.deWir leben TYPO3page.10 = TEXTpage.10.value = Diese Seite ist noch in der Entwicklung[IP = 192.168.*.*]page.10 = TEMPLATEpage.10.template.file = fileadmin/template.html...[end]</p> <p>setup# IntranetAnything else# InternetDiese Seite ist noch in der Entwicklung</p> <p>Schritt 8: Weitere Conditions Beispiele (IP)In2code.deWir leben TYPO3# clear subpartpage.10.subparts.RECHTESPALTE = COApage.10.subparts.RECHTESPALTE {10 = TEXT20 = TEXT30 = TEXT}</p> <p># show if on PID 1[globalVar = TSFE:id=1]page.10.subparts.RECHTESPALTE.10.value = Du bist auf Home[end]</p> <p># if news detail is shown[globalVar = GP:tx_ttnews|tt_news &gt; 0]page.10.subparts.RECHTESPALTE.20.value = News powered by TYPO3[end]</p> <p># if powermail mail was sent[globalVar = GP:tx_powermail_pi1|uid40 = *]page.10.subparts.RECHTESPALTE.10.value = Mail wurde abgesendet![end]</p> <p>setupSchritt 9: Weitere Conditions Beispiele (globalVar)In2code.deWir leben TYPO3[userFunc = user_test]# do something[else]# do something else[end]</p> <p>setupInfo: Keine Klassen, nur Funktionenfunction user_test() { if (date('m') == '01') {return true; } else {return false;}}</p> <p>include 'fileadmin/userFunc.php';localconfSchritt 10: Weitere Conditions Beispiele (userFunc)In2code.deWir leben TYPO3TypoScript CASEIn2code.deWir leben TYPO3CASE in TypoScripthnlich der SWITCH Funktion in PHP, kann man mit CASE einen Parameter auf verschiedene Werte vergleichen.</p> <p>Sinn:ist A gleich B, dann X, wenn nicht, ist A gleich C, dann Y, wenn nicht,ist A gleich D, dann ZSchnelle Abarbeitung mglichIn2code.deWir leben TYPO3# page.subtitle could be 1 or 2 or 3lib.object = CASElib.object {key.field = subtitledefault = TEXTdefault.value = Das ist eine Standardseite2 = TEXT2.value = Hier finden sie die besten News</p> <p>3 = TEXT3.value = Hier zeigen wir Ihnen tolle Fotos}</p> <p>Page.10.marks.OBJECT &lt; lib.object</p> <p>setupSchritt 11: CASE anwendenIn2code.deWir leben TYPO3# wrap header of a content element10 = CASE10 {key.field = header_layout1 = TEXT1.fontTag = |</p> <p>2 &lt; .12.fontTag = |</p> <p>3 &lt; .13.fontTag = |}</p> <p>setupSchritt 12: CASE anwenden (von css_styled_content)In2code.deWir leben TYPO3Details: http://www.typo3.net/index.php?id=13&amp;action=list_post&amp;tid=78897object = CASEobject {key.data = TSFE:fe_user|sesData|powermail_5345|uid34default = TEXTdefault.value = Sehr geehrte FrauHerr = TEXTHerr.value = Sehr geehrter Herr}</p> <p>plugin.tx_powermail_pi1.dynamicTyposcript.test &lt; object</p> <p>setupSchritt 13: CASE anwenden (von powermail)In2code.deWir leben TYPO3$res = $GLOBALS['TYPO3_DB']-&gt;exec_SELECTquery ('title, description, url','tx_jump_url', '1', '', '', 1);while ($row = $GLOBALS['TYPO3_DB']-&gt;sql_fetch_assoc($res)) {foreach ($row as $key =&gt; $value) {$this-&gt;cObj-&gt;start(array('table'=&gt;$key,'value'=&gt;$value), 'table');$marker['###' . strtoupper($key) . '###'] = $this-&gt;cObj-&gt;cObjGetSingle($conf['temp'], $conf['temp.']);}}</p> <p>temp = CASEtemp {key.field = tabledefault = TEXTdefault.field = valueurl &lt; .defaulturl.typolink.parameter.field = url}</p> <p>setupSchritt 14: CASE anwenden (Extensionentwicklung)In2code.deWir leben TYPO3TypoScript ifIn2code.deWir leben TYPO3Was ist eine IF Abfrage in TypoScript?TypoScript IF lsst sich nur bedingt mit einer IF-Abfrage in PHP Vergleichen. Annhernd lassen sich jedoch auch hier bedingte Ausfhrungen von TypoScript realisieren.Gngige IF Statements in TypoScript:isTrue, isFalse, isPositive, isGreaterThan, isLessThan, equals, isInList, value, negate, directReturnIn2code.deWir leben TYPO3# title: lib.title = TEXTlib.title.field = titlelib.title.wrap = <b>Titel: |</b></p> <p>setupInfo: Leerzeichen im Wrap mit noTrimWrapTitel:</p> <p>Titel: Seite1# title: Seite1lib.title = TEXTlib.title.field = titlelib.title.wrap = <b>Titel: |</b></p> <p>setup</p> <p>Schritt 15: Wrap immer vorhanden!?In2code.deWir leben TYPO3# title: Seite1lib.title = TEXTlib.title {field = titlefield.wrap = <b>Titel: |</b> if.isTrue.field = title}</p> <p>setup</p> <p>Titel: Seite1</p> <p># title:lib.title = TEXTlib.title {field = titlefield.wrap = <b>Titel: |</b> if.isTrue.field = title}</p> <p>setupSchritt 16: Wrap nur wenn Inhalt (Wenn)In2code.deWir leben TYPO3lib.title COAlib.title {10 = TEXT10.field = title10.if.isTrue.field = title20 = TEXT20.value = Kein Titel fr diese Seite vergeben20.if.isFalse.field = title}</p> <p>setupSeite 1Kein Titel fr diese Seitevergeben</p> <p>Schritt 17: Anderer Inhalt wenn Feld leer (COA: Wenn, Dann)In2code.deWir leben TYPO3temp.maintemplate = COAtemp.maintemplate {# if there is content in the right col10 = COA10 {if.isTrue.numRows &lt; styles.content.getRight10 = TEMPLATE10 {template = FILEtemplate.file = fileadmin/2cols.html}} # if there is NO content in the right col20 = COA20 {if.isFalse.numRows &lt; styles.content.getRight10 = TEMPLATE10 {template = FILEtemplate.file = fileadmin/1col.html}}}</p> <p>setupSchritt 18: Praxisbeispiel Anderes HTML Template bei Wert in rechter SpalteIn2code.deWir leben TYPO3page.10 = TEMPLATEpage.10 {template = FILEtemplate.file = fileadmin/tmpl.html subparts.CONTENT = COAsubparts.CONTENT {10 = COA10 {if.isTrue.numRows &lt; styles.content.getLeft10 &lt; styles.content.getLeft10.wrap = |20 &lt; styles.content.get20.wrap = |} 20 = COA20 {if.isFalse.numRows &lt; styles.content.getLeft10 = TEXT20 &lt; styles.content.get20.wrap = |} }}</p> <p>setupSchritt 18: Praxisbeispiel Automatisch Zwei-Spaltig durchanderen WrapIn2code.deWir leben TYPO3lib.foo = TEXTlib.foo {value = News mit UID 2if.value.data = GPvar:tx_ttnews[tt_news]if.equals = 2}</p> <p>setup# &amp;tx_ttnews[tt_news]=1# &amp;tx_ttnews[tt_news]=2News mit UID 2</p> <p>Schritt 19: if mit equalsIn2code.deWir leben TYPO3lib.foo = COAlib.foo {10 = TEXT10.value = News mit UID 210.if.value.data = GPvar:tx_ttnews[tt_news]10.if.equals = 2</p> <p>20 = TEXT20.value = Andere News20.if.value.data = GPvar:tx_ttnews[tt_news]20.if.equals = 220.if.negate = 1}</p> <p>setup# Gleiches Resultat mit CASElib.foo = CASElib.foo {key.data = GPvar:tx_ttnews[tt_news]default = TEXTdefault.value = Andere News2 = TEXT20.value = News mit UID 2}</p> <p>setupSchritt 20: negateIn2code.deWir leben TYPO3lib.menu = HMENUlib.menu {1 = TMENU1 {NO {stdWrap.cObject = COAstdWrap.cObject {10 = TEXT10.field = title10.if {value.field = uidequals.data = GPvar:tx_finder_pi1|page}10.wrap = <b>|</b><br />20 &lt; .1020.if.negate = 120.wrap = |<br />}}}}</p> <p>setupSchritt 21: Komplexeres BeispielMen mit ACT Status anhand GET ParameterIn2code.deWir leben TYPO3Allgemeine LinksZum ThemaIn2code.deWir leben TYPO3Einfhrung conditions:http://www.rainer-grundel.de/wissensdb/typo3/allgemein/artikel/article/condition_fuer_typo3_und_oder_verknuepfung.htmltypo3blogger.de (if, case):http://typo3blogger.de/if-abfrage-mit-typoscript/typo3blogger.de (Ein- oder zweispaltige Templates): http://typo3blogger.de/automatisch-ein-oder-zweispaltig-ohne-tv-und-ohne-templateselector/wiki.typo3.org (if)http://wiki.typo3.org/index.php/De:TSref/ifwiki.typo3.org (case)http://wiki.typo3.org/index.php/De:TSref/CASEconditions TSref 4.3: http://typo3.org/documentation/document-library/references/doc_core_tsref/4.3.0/view/1/4/In2code.deWir leben TYPO3</p> <p>In2code.Vielen Dankwww.in2code.deStefan BusemannTina GasteigerAlex Kellner</p> <p>In2code.deWir leben TYPO3</p>