TYPO3 TypoScript: IF, CASE, CONDITIONS

  • View
    10.471

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Transcript

IF, CASE, CONDITION TypoScript

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

Hello World

setupSchritt 1: Statischen Text ausgebenIn2code.deWir leben TYPO3page = PAGEpage.10 = TEMPLATEpage.10.template = FILEpage.10.template.file = fileadmin/htmltemplate.htmlHello World

Info: TEMPLATE generiert HTML Head und erlaubt ersetzen von Subparts und Markern

Hello World

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

Hello World
Ich bin ein Marker

setupSchritt 3: HTML Template mit Marker ausgebenIn2code.deWir leben TYPO3page = PAGEpage {10 = TEXT10.value = {$var}20 = TEXT20.value = {$var}30 < .10

setupHello WorldHello WorldHello World

Hello WorldHello WorldHello World

var = Hello World

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

[globalVar = GP:L=1]page.10.value = Hallo Welt[end]Info: Conditions nie innerhalb von geschweiften Klammern nutzen# index.php?id=1Hello World

setup# index.php?id=1&L=1Hallo Welt

Schritt 5: Conditions nutzenIn2code.deWir leben TYPO3page.10 = TEXTpage.10 {value = lala[globalVar = GP:L=1]value = lulu[end]}# immer lalalala

setup# index.php?id=1lala

# index.php?id=1&L=1lulu

page.10 = TEXTpage.10 {value = lala}

[globalVar = GP:L=1]page.10.value = lulu[end]

setupSchritt 6: Conditions nie innerhalb von geschweiften KlammernIn2code.deWir leben TYPO3page.10 = TEXTpage.10.value = {$var}

setupInfo: Conditions knnen auch in den constants verwendet werden# SeptemberEs ist Winter# AugustEs ist Sommer

[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]

constants

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]

setup# IntranetAnything else# InternetDiese Seite ist noch in der Entwicklung

Schritt 8: Weitere Conditions Beispiele (IP)In2code.deWir leben TYPO3# clear subpartpage.10.subparts.RECHTESPALTE = COApage.10.subparts.RECHTESPALTE {10 = TEXT20 = TEXT30 = TEXT}

# show if on PID 1[globalVar = TSFE:id=1]page.10.subparts.RECHTESPALTE.10.value = Du bist auf Home[end]

# if news detail is shown[globalVar = GP:tx_ttnews|tt_news > 0]page.10.subparts.RECHTESPALTE.20.value = News powered by TYPO3[end]

# if powermail mail was sent[globalVar = GP:tx_powermail_pi1|uid40 = *]page.10.subparts.RECHTESPALTE.10.value = Mail wurde abgesendet![end]

setupSchritt 9: Weitere Conditions Beispiele (globalVar)In2code.deWir leben TYPO3[userFunc = user_test]# do something[else]# do something else[end]

setupInfo: Keine Klassen, nur Funktionenfunction user_test() { if (date('m') == '01') {return true; } else {return false;}}

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.

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

3 = TEXT3.value = Hier zeigen wir Ihnen tolle Fotos}

Page.10.marks.OBJECT < lib.object

setupSchritt 11: CASE anwendenIn2code.deWir leben TYPO3# wrap header of a content element10 = CASE10 {key.field = header_layout1 = TEXT1.fontTag = |

2 < .12.fontTag = |

3 < .13.fontTag = |}

setupSchritt 12: CASE anwenden (von css_styled_content)In2code.deWir leben TYPO3Details: http://www.typo3.net/index.php?id=13&action=list_post&tid=78897object = CASEobject {key.data = TSFE:fe_user|sesData|powermail_5345|uid34default = TEXTdefault.value = Sehr geehrte FrauHerr = TEXTHerr.value = Sehr geehrter Herr}

plugin.tx_powermail_pi1.dynamicTyposcript.test < object

setupSchritt 13: CASE anwenden (von powermail)In2code.deWir leben TYPO3$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery ('title, description, url','tx_jump_url', '1', '', '', 1);while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {foreach ($row as $key => $value) {$this->cObj->start(array('table'=>$key,'value'=>$value), 'table');$marker['###' . strtoupper($key) . '###'] = $this->cObj->cObjGetSingle($conf['temp'], $conf['temp.']);}}

temp = CASEtemp {key.field = tabledefault = TEXTdefault.field = valueurl < .defaulturl.typolink.parameter.field = url}

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 = Titel: |

setupInfo: Leerzeichen im Wrap mit noTrimWrapTitel:

Titel: Seite1# title: Seite1lib.title = TEXTlib.title.field = titlelib.title.wrap = Titel: |

setup

Schritt 15: Wrap immer vorhanden!?In2code.deWir leben TYPO3# title: Seite1lib.title = TEXTlib.title {field = titlefield.wrap = Titel: | if.isTrue.field = title}

setup

Titel: Seite1

# title:lib.title = TEXTlib.title {field = titlefield.wrap = Titel: | if.isTrue.field = title}

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}

setupSeite 1Kein Titel fr diese Seitevergeben

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 < styles.content.getRight10 = TEMPLATE10 {template = FILEtemplate.file = fileadmin/2cols.html}} # if there is NO content in the right col20 = COA20 {if.isFalse.numRows < styles.content.getRight10 = TEMPLATE10 {template = FILEtemplate.file = fileadmin/1col.html}}}

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 < styles.content.getLeft10 < styles.content.getLeft10.wrap = |20 < styles.content.get20.wrap = |} 20 = COA20 {if.isFalse.numRows < styles.content.getLeft10 = TEXT20 < styles.content.get20.wrap = |} }}

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}

setup# &tx_ttnews[tt_news]=1# &tx_ttnews[tt_news]=2News mit UID 2

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

20 = TEXT20.value = Andere News20.if.value.data = GPvar:tx_ttnews[tt_news]20.if.equals = 220.if.negate = 1}

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}

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 = |
20 < .1020.if.negate = 120.wrap = |
}}}}

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