if else override

Das folgende Beispiel zeigt, wie man auf einfache Weise mit TypoScript mehrere if-, else-, oder auch elseif-Bedingungen in einem Rutsch auf ihren Gültigkeit hin validieren kann. Die nächsten Zeilen haben die Aufgabe den Untertitel der Startseite auf mehrere Bedingungen hin zu prüfen und gemäß den Ergebnissen umzuschreiben.

// Default TYPO3 page object
// Falls bereits aktiviert, einfach auskommentieren
page = PAGE

// Zunächst das Inhaltselement anlegen, wo die if else Bedingungen erfolgen
page.1 = COA
page.1 {

    // Ein wenig CSS zur besseren Darstellung
    wrap = <div style="padding:10px; margin:10px; border:1px solid red; color:#000; background:#fff;">|</div>

    // Beispiel #1
    // Zeige mir den Untertitel der aktuellen Seite
    // oder ersetze diesen, falls es keinen gibt
    10 = TEXT
    10 {
        wrap < page.1.wrap
        // Direkte Ausgabe ohne Prüfung
        field = subtitle
        // Die TypoScript Funktion override greift, wenn es keinen Untertitel gibt
        override = Text, wenn bei der aktuellen Seite keine Untetitel da ist
        // Override mit der TypoScript Funktion isFalse, als einfache if Abfrage
        override.if.isFalse.field = subtitle
    }

    // Beispiel #2
    // Zeige mir den Untertitel nur bei der Startseite und beachte ob diese auch einen hat
    // if = Startseite AND if = Untertitel
    20 = TEXT
    20 {
        wrap < page.1.wrap
        // Mehreren if Statements über ein override cObject verarbeiten
        field = subtitle
        override.cObject = COA
        override.cObject {
            10 = TEXT
            10 {
                // 1. Wenn aktuelle Seiten ID gleich ID der Startseite
                value = Info-Text, wenn Seiten ID gleich der Startseite
                if {
                    value = 1
                    equals.data = TSFE:id
                }
                // 2. Wenn ein Untertitel für die Startseite vorhanden ist, diesen überschreiben
                override = Die Startseite (ID {TSFE:id}) hat einen Untertitel
                override {
                    if.isTrue.field = subtitle
                    insertData = 1
                }
            }
        }
    }

    // Beispiel #3
    // Kombination aus den Bedingungen
    // IF Startseite = true AND Untertitel = true
    // ELSE nicht Startseite
    30 = COA
    30 {
        // Übergabe der vorherigen Abfrage aus Beispiel #2
        // if = Startseite AND if = Untertitel
        10 < page.1.20

        // else Anweisung, falls es sich nicht um die Startseite handelt
        stdWrap.wrap < page.1.wrap
        stdWrap.override = Leider nicht die Startseite
        stdWrap.override.if {
            value = 1
            equals.data = TSFE:id
            negate = 1
        }
    }
}

Die Variationen der if else Bedingungen mittels override lassen sich beliebig fortführen und verknüpfen.

Eine Liste vorbelegter if else Bedingungen und weiter Informationen zu den TYPO3 Conditions, findet man in der: if - TypoScript Funktionsreferenz.