TYPO3 Fluid IF ELSE

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>