TYPO3 / Flexform: Bedingungen für Flexform Felder und logische Verknüpfungen (displayCond)

Wie versprochen, hier das Snippet für den Einsatz von Bedingungen bzw. Conditions in TYPO3 Flexforms. Bei so ziemlich jeder umfangreichen Extension hat man schon oft Probleme den Überblick in seiner Flexform zu behalten. Wenn der Endbenutzer dann, egal nachdem welche Action er ausgewählt hat, alle Felder angezeigt bekommt, verringert sich mit hoher Wahrscheinlichkeit seine Lebenserwartung.

Das Stichwort hier ist das Feld „displayCond“. Hiermit verweist man auf innerhalb eines Flexform Feldes auf ein anderes Feld (in diesem Beispiel „switchableControllerActions„), welches als Condition herangezogen wird.

Hier zunächst ein simples Beispiel für den Einsatz von displayCond in einer Flexform:

<settings.plugin_title>
	<TCEforms>
		<exclude>1</exclude>
		<label>Titel des Plugins</label>
		<displayCond>FIELD:switchableControllerActions:=:Artikel->list</displayCond>
		<config>
	  		<type>input</type>
		  	<eval>trim</eval>
		  	<default>Listenansicht</default>
		</config>
	</TCEforms>
</settings.plugin_title>

Wie man sieht geben wir ein Feld an und geben vor, welcher Value dort ausgewählt sein muss, damit die Bedingung wahr ist. Hierbei lautet die Bedingungen:
Nur anzeigen, wenn Controller „Artikel“ und „list“ als Action ausgewählt ist.

Diese lassen sich auch einfach verknüpfen. Folgende Bedingung trifft sowohl für die Action „list“ als auch „listPopular“ meiner Extension zu:

<displayCond>FIELD:switchableControllerActions:=:Artikel->list,Artikel->listPopular</displayCond>

Logische Verknüpfungen AND / OR

Komplizierter und dank neuerer TYPO3 Versionen überhaupt erst möglich, ist das Verknüpfen von Bedingungen mit logischem UND / ODER – generell bekannt als AND und OR. Getestet wurde dies unter TYPO3 Version 6.1.5 und ich glaube es gibt diese Möglichkeit auch erst seit TYPO3 6.x.

<settings.video_width>
	<TCEforms>
		<exclude>1</exclude>
		<label>Breite des Videos in Pixeln</label>
		<displayCond>
			<AND>
				<numIndex>FIELD:switchableControllerActions:=:Media->videoPlayer</numIndex>
				<AND>
					<numIndex>FIELD:settings.kind_of_video:=:2</numIndex>										
				</AND>
			</AND>
		</displayCond>
		<config>
	  		<type>input</type>
		  	<eval>trim, int</eval>
		  	<default>600</default>
		</config>
	</TCEforms>
</settings.video_width>

In diesem Snippet sollte die Breite eines Videos nur dann anzugeben sein, wenn Controller „Media“ und Action „videoPlayer“ ausgewählt sind UND dazu noch im Feld settings.kind_of_video der Wert 2 ausgewählt ist.

Eine einfache OR Verknüpfung: (man beachte index=“X“)

<displayCond>
	<OR>
		<numIndex index="0">FIELD:switchableControllerActions:=:Anliegen->show</numIndex>
		<numIndex index="1">FIELD:switchableControllerActions:=:Organisationseinheit->show</numIndex>
	</OR>
</displayCond>

5 Kommentare

Schreibe einen Kommentar zu Jimit Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Highlighting von Codes ist mit den Tags  [ts], [php], [html], [javascript], [xml] oder [code] möglich.