Alle möglichen Arten eines String-Vergleichs oder die Auswertung von Fluid IF / ELSE Conditions, werden dabei über den TYPO3 Fluid IF Viewhelper geleitet.
Die einfachste Form einer TYPO3 Fluid Condition (Bedingung), kann folgendermaßen realisiert werden.
<f:if condition="{bedingung}">
Ist die "{bedingung}" TRUE / erfüllt, dann zeige diesen Text an.
</f:if>
Etwas "spektakulärer" wird es, wenn die if-Bedingung um eine else-Anweisung erweitert wird. Das bedeutet: if (wenn) Condition erfüllt, then (dann) mach das. Und falls die Bedingung nicht zutrifft, mach was else, also anderes.
<f:if condition="{bedingung}">
<f:then>
Wenn "{bedingung}" TRUE, also erfüllt, dann das anzeigen.
</f:then>
<f:else>
Wenn "{bedingung}" FALSE, dann das hier anzeigen.
</f:else>
</f:if>
Die Abfragen für die Bedingungen lassen sich auch ineinander verschachteln, wie das nächste Beispiel zeigt.
<f:if condition="{bedingungEins}">
<f:then>
<f:if condition="{bedingungZwei}">
<f:then>
Wenn "{bedingungEins}" UND "{bedingungZwei}" TRUE, dann das anzeigen.
</f:then>
<f:else>
Wenn "{bedingungEins}" TRUE aber "{bedingungZwei}" FALSE, dann das anzeigen.
</f:else>
</f:if>
</f:then>
<f:else>
Wenn "{bedingungEins}" FALSE, dann kommt das.
</f:else>
</f:if>
Ein TypoScript Praxisbeispiel
Ein sinnvoller Ansatz für eine Fluid ViewHelper IF ELSE Bedingung, wäre die Prüfung auf ein existierendes Inhaltselement, das über ein FLUID-Template angezeigt werden soll.
Mit dem TypoScript-Objekt FLUIDTEMPLATE, werden hier alle Komponenten für das FLUID-Template eingebunden. Über die variables, werden dann die Template-Sektionen zugwiesen.
page.10 = FLUIDTEMPLATE
page.10 {
file = fileadmin/templates/fluid/template.html
partialRootPath = fileadmin/templates/fluid/partials/
layoutRootPath = fileadmin/templates/fluid/layouts/
variables {
// Header-Bereich
contentHeader < styles.content.get
contentHeader.select.where = colPos = 0
contentHeader.if.isTrue {
numRows < styles.content.get
select.where = colPos = 0
}
// Inhalts-Bereich
contentMain < styles.content.get
contentMain.select.where = colPos = 1
contentMain.if.isTrue {
numRows < styles.content.get
select.where = colPos = 1
}
// Footer-Bereich
contentFooter < styles.content.get
contentFooter.select.where = colPos = 2
contentFooter.if.isTrue {
numRows < styles.content.get
select.where = colPos = 2
}
}
}
Der Trick hier ist, das mittels der TypoScript-Funktion numRows geprüft wird, ob es ein Inhalselement (Content Element) in der jeweiligen colPos 0, 1 oder 2 der Seite gibt.
Die Fluidtemplate-Variable, kann nun auch gleich für die TYPO3 Fluid IF-Bedingung benutzt werden.
<f:if condition="{contentMain}">
Dieser Text wird angezeigt, wenn auf dieser Seite
ein Inhaltselement mit einer Referenz auf
Spalte 1 existiert.
Mit dem TYPO3 Fluid format Viewhelper,
wird das Content Element dann auch gleich angezeigt.
<f:format.html parseFuncTSPath="">{contentMain}</f:format.html>
</f:if>