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:15] – Markierung der alten, 'klassischen' Conditions 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ührtDie alten, "klassischenConditions 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 ====
Zeile 52: Zeile 105:
 // 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>
Zeile 62: Zeile 117:
  
 // 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 72: Zeile 127:
 // "Klassische" Condition bis TYPO3 v9: // "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>
  
Zeile 78: Zeile 136:
 // "Klassische" Condition bis TYPO3 v9: // "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>
  
Zeile 109: 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 116: 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 163: 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: // "Klassische" Condition bis TYPO3 v9:
 [globalVar = LIT:10 < {$konstante}] [globalVar = LIT:10 < {$konstante}]
 +
 +// Ab TYPO3 9.4:
 +[{$konstante} > 10]
 </code> </code>
  
Zeile 193: Zeile 272:
 </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.txt · Zuletzt geändert: 2023/08/28 19:51 von admin