Benutzer-Werkzeuge

Webseiten-Werkzeuge


typo3:about:conditions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
typo3:about:conditions [2018/10/30 20:13] – [Domain] admintypo3:about:conditions [2023/08/28 19:51] (aktuell) admin
Zeile 1: Zeile 1:
 +====== TypoScript-Condition Cheatsheet ======
 +
 ===== Conditions: Allgemeines ===== ===== Conditions: Allgemeines =====
 +
 +In TYPO3 9.4 wurde die //symfony expression language// eingeführt. Die alten, „klassischen“ Conditions gelten damit als deprecated und werden in TYPO3 v10 entfernt.
 +
 +==== "Klassische" Conditions bis TYPO3 v9 ====
 +
 <code typoscript> <code typoscript>
-Beides muss zutreffen+// Beides muss zutreffen:
 [Condition 1] && [Condition 2] [Condition 1] && [Condition 2]
 [Condition 1] AND [Condition 2] [Condition 1] AND [Condition 2]
  
-Eines von beiden muss zutreffen+// Eines von beiden muss zutreffen:
 [Condition 1][Condition 2]  [Condition 1][Condition 2] 
 [Condition 1] || [Condition 2]  [Condition 1] || [Condition 2] 
 [Condition 1] OR [Condition 2]  [Condition 1] OR [Condition 2] 
  
-Entweder Firefox ODER der Internet Explorer 8++// Entweder Firefox ODER der Internet Explorer 8+:
 [browser = firefox] || [browser = msie] && [version => 8] [browser = firefox] || [browser = msie] && [version => 8]
  
-Weitere Auswahlmöglichkeiten dank 'ELSE'+// Weitere Auswahlmöglichkeiten dank 'ELSE':
 [browser = msie] [browser = msie]
 page.10.value = Internet Explorer page.10.value = Internet Explorer
Zeile 20: Zeile 27:
 [END] [END]
  
-Bedingung verneinen+// Bedingung verneinen:
 [Condition] [Condition]
 [else] [else]
 page.10.value = Füge direkt nach der Bedingung ein [else] ein. page.10.value = Füge direkt nach der Bedingung ein [else] ein.
 [end] [end]
 +</code>
 +
 +<WRAP center round info 100%>
 +Anmerkung: die ''browser''-Conditions sind schon lange aus TYPO3 entfernt, sie dienen nur als nachvollziehbares Beispiel.
 +</WRAP>
 +
 +==== Conditions mit symfony expression language ab TYPO3 9.4 ====
 +
 +Mit der neuen Syntax können Conditions innerhalb der selben Klammer verknüpft werden. Die alte Schreibweise in zwei Blöcken ist zumindest in TYPO3 v9 weiterhin möglich, womöglich aber ebenfalls deprecated. Ich empfehle daher die neue Schreibweise.
 +
 +<code typoscript>
 +// Beides muss zutreffen:
 +[Condition 1 && Condition 2]
 +
 +// Eines von beiden muss zutreffen:
 +[Condition 1 || Condition 2] 
 +
 +// Entweder eingeloggt ODER auf der englischen Version der Seite mit ID 75:
 +[frontend.user.isLoggedIn == 1 || getTSFE().id == 75 && siteLanguage("title") == "English"]
 +
 +// Weitere Auswahlmöglichkeiten dank 'ELSE':
 +[loginUser('*')]
 +page.10.value = Der Nutzer ist angemeldet.
 +[ELSE]
 +page.10.value = Der Nutzer ist nicht angemeldet.
 +[END]
 +
 +// Bedingung verneinen:
 +[frontend.user.isLoggedIn != 1]
  
 +// Neu: Zahlenraum zwischen 18 und 45:
 +[page["uid"] in 18..45]
 </code> </code>
 +
 +<WRAP center round tip 100%>
 +Es gibt noch einige Möglichkeiten mehr, um Bedingungen abzufragen:\\ [[https://docs.typo3.org/typo3cms/TyposcriptReference/Conditions/Reference.html|Offizielle Condition-Dokumentation]]\\
 +Derzeit ist diese Dokumentation noch ausbaufähig.
 +</WRAP>
  
 ---- ----
Zeile 32: Zeile 75:
 ===== Conditions: Beispiele ===== ===== Conditions: Beispiele =====
  
-In TYPO3 9.4 wurde die //symfony expression language// eingeführt. Die alten Conditions gelten damit als deprecated und werden in TYPO3 v10 entfernt.+==== Application Context ==== 
 +<code typoscript> 
 +// "Klassische" Condition bis TYPO3 v9: 
 +[applicationContext = Staging] 
 +[applicationContext = Production/Staging] 
 + 
 +// Ab TYPO3 9.4 - doppeltes Gleichheitszeichen und Anführungszeichen: 
 +[applicationContext == "Development"
 +[applicationContext == "Production/Staging"
 + 
 +</code> 
 ==== Sprachwahl ==== ==== Sprachwahl ====
 <code typoscript> <code typoscript>
 +// "Klassische" Condition bis TYPO3 v9:
 [globalVar = GP:L = 1] [globalVar = GP:L = 1]
  
Zeile 45: Zeile 100:
 ==== Mit Get-Parameter: z.B. &print=1 ==== ==== Mit Get-Parameter: z.B. &print=1 ====
 <code typoscript> <code typoscript>
 +// "Klassische" Condition bis TYPO3 v9:
 [globalVar = GP:print > 0] [globalVar = GP:print > 0]
  
 // Ab TYPO3 9.4: // Ab TYPO3 9.4:
 [request.getQueryParams() ['print'] > 0] [request.getQueryParams() ['print'] > 0]
 +[traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0]
 </code> </code>
  
 +Die erweiterte und empfohlene Condition mit ''traverse'' prüft zunächst, ob das Array (hier: //tx_news_pi1/news//) existiert. Dies verhindert Log-Einträge mit //"RuntimeException: Unable to get an item on a non-array"//, wenn das Array fehlt.
 ==== Einzelne Seite OHNE Unterseiten ==== ==== Einzelne Seite OHNE Unterseiten ====
 <code typoscript> <code typoscript>
 +// "Klassische" Conditions bis TYPO3 v9:
 [globalVar = TSFE:id=17, TSFE:id=24]  [globalVar = TSFE:id=17, TSFE:id=24] 
-ODER +// ODER 
 [globalVar = TSFE:page|pid=17, TSFE:page|pid=24] [globalVar = TSFE:page|pid=17, TSFE:page|pid=24]
  
 // Ab TYPO3 9.4: // Ab TYPO3 9.4:
-[page["uid"== 17] +[traverse(page"uid"== 17] 
-[page["uid"in [17,24]]+[traverse(page"uid"in [17,24]]
 [getTSFE().id == 17] [getTSFE().id == 17]
 [getTSFE().id in [17,24]] [getTSFE().id in [17,24]]
Zeile 66: Zeile 125:
 ==== Seiten-ID UND deren Unterseiten ==== ==== Seiten-ID UND deren Unterseiten ====
 <code typoscript> <code typoscript>
 +// "Klassische" Condition bis TYPO3 v9:
 [PIDinRootline = 17, 24] [PIDinRootline = 17, 24]
 +
 +// Ab TYPO3 9.4:
 +[17 in tree.rootLineIds || 24 in tree.rootLineIds]
 </code> </code>
  
 ==== NUR Unterseiten der angegebenen Seiten-ID, nicht die gewählte Seite selbst ==== ==== NUR Unterseiten der angegebenen Seiten-ID, nicht die gewählte Seite selbst ====
 <code typoscript> <code typoscript>
 +// "Klassische" Condition bis TYPO3 v9:
 [PIDupinRootline = 17, 24] [PIDupinRootline = 17, 24]
 +
 +// Ab TYPO3 10.3:
 +[17 in tree.rootLineParentIds || 24 in tree.rootLineParentIds]
 </code> </code>
  
 ==== Ebene auf der rootline. 0 ist root ==== ==== Ebene auf der rootline. 0 ist root ====
 <code typoscript> <code typoscript>
 +// "Klassische" Condition bis TYPO3 v9:
 [treeLevel = 0,2] [treeLevel = 0,2]
 </code> </code>
Zeile 102: Zeile 170:
  
 // Ab TYPO3 9.4: // Ab TYPO3 9.4:
-[page["backend_layout"== 'pagets__2_columns_33_66']+[traverse(page"backend_layout"== 'pagets__2_columns_33_66']
 </code> </code>
  
Zeile 109: Zeile 177:
 // "Klassische" Condition bis TYPO3 v9: // "Klassische" Condition bis TYPO3 v9:
 [page|backend_layout = 1] [page|backend_layout = 1]
 +
 +// Ab TYPO3 9.4:
 +[tree.pagelayout == 1]
 +[tree.pagelayout == "pagets__1Column"]
 </code> </code>
  
Zeile 126: Zeile 198:
 [loginUser = *] [loginUser = *]
 [loginUser = 1,2] [loginUser = 1,2]
 +
  
 // Ab TYPO3 9.4: // Ab TYPO3 9.4:
Zeile 145: Zeile 218:
 ==== Benutzername ==== ==== Benutzername ====
 <code typoscript> <code typoscript>
 +// "Klassische" Condition bis TYPO3 v9:
 [globalString = TSFE:fe_user|user|username = johndoe] [globalString = TSFE:fe_user|user|username = johndoe]
 </code> </code>
Zeile 154: Zeile 228:
  
 // Ab TYPO3 9.4: // Ab TYPO3 9.4:
-[getTSFE().beUserLogin]+[getTSFE().isBackendUserLoggedIn()]
 </code> </code>
  
 +Zwischenzeitlich gab es einen Bug, wodurch man die Symfony Condition erweitern musste (''[getTSFE() && getTSFE().isBackendUserLoggedIn()]''). Dieser ist aber nun in TYPO3 v9 und v10 behoben.
 +
 +Seit TYPO3 9.5.16 und 10.4.1 ist es alternativ möglich, die verschiedenen ''[backend.user.*]'' Conditions im Frontend zu verwenden:
 +
 +<code typoscript>
 +[backend.user.isLoggedIn]
 +[backend.user.isAdmin]
 +[backend.user.userId == 2]
 +</code>
 +
 +Quelle: [[https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Conditions/Index.html#backend|Offizielle Dokumentation]] (mit Dank an Josef Glatz für den Hinweis!)
 ==== Auszulesende Konstante größer als 10 ==== ==== Auszulesende Konstante größer als 10 ====
 <code typoscript> <code typoscript>
 +// "Klassische" Condition bis TYPO3 v9:
 [globalVar = LIT:10 < {$konstante}] [globalVar = LIT:10 < {$konstante}]
 +
 +// Ab TYPO3 9.4:
 +[{$konstante} > 10]
 </code> </code>
  
 ==== Eigene Funktion ==== ==== Eigene Funktion ====
 <code typoscript> <code typoscript>
 +// "Klassische" Condition bis TYPO3 v9:
 [userFunc = Funktionsname(Parameter)] [userFunc = Funktionsname(Parameter)]
 </code> </code>
Zeile 169: Zeile 259:
 ==== Ist Extension installiert? ==== ==== Ist Extension installiert? ====
 <code typoscript> <code typoscript>
 +// "Klassische" Condition bis TYPO3 v9:
 [userFunc = TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('extkey')] [userFunc = TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('extkey')]
 </code> </code>
Zeile 176: Zeile 267:
  
 <code typoscript> <code typoscript>
 +// Ab TYPO3 9.4:
 [site("identifier") == "mysite"] [site("identifier") == "mysite"]
 [site("base") == "http://local.test/" [site("base") == "http://local.test/"
 </code> </code>
  
 +==== Spalte in Backend-Layout abfragen (Page TSconfig, z.B. TCEFORM) ====
 +
 +<code typoscript>
 +// "Klassische" Condition bis TYPO3 v9:
 +[globalVar = GP:defVals|tt_content|colPos==10]
 + 
 +// Ab TYPO3 9.4:
 +[request.getQueryParams()['defVals']['tt_content']['colPos'] == 10]
 +</code>
 +
 +Quelle: [[https://forge.typo3.org/issues/91646#note-1|Oliver Hader auf TYPO3 Forge]]
typo3/about/conditions.1540926789.txt.gz · Zuletzt geändert: 2018/10/30 20:13 von admin