TS select CONTENT

Das TypoScript Inhalts-Objekt CONTENT ist für den Zugriff auf Datenbanken bestimmt und kann dort Werte aus beliebigen Tabellen verarbeiten und eine Ausgabe generieren. Die Syntax ist dabei sehr ähnlich der von MySQL mit SELECT, FROM und WHERE.

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

// Inhaltselement anlegen, in dem die TypoScript Select-Abfragen 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
    // MySQL Select auf eine Tabelle und Ausgabe der Daten
    10 = CONTENT
    10 {
        wrap < page.1.wrap

        // *****
        // 1. Teil des TYPO3 CONTENT Object, ist für die SQL Abfrage zuständig
        // *****

        // Tabelle aus der die Datensätze kommen sollen, MySQL FROM
        table = tt_content
        // TypoScript Select, wie beim MySQL SELECT
        select {
            // Angabe zur Auswahl der Tabellenspalten, deren Namen
            selectFields = uid, header, bodytext AS Beschreibung
            // Die 1 steht hier für die Uid der Elternseite im Seitenbaum
            pidInList = 1
            // Anzahl weiterer Ebenen, die von der Elternseite aus selected werden soll
            recursive = 1
            // TypoScript Funktion orderBy, wie MySQL ORDER BY
            orderBy = uid DESC
            // TypoScript Funktion groupBy, wie MySQL GROUP BY
            groupBy = crdate
            // TypoScript Funktion max, wie MySQL LIMIT 99
            max = 99
            // TypoScript Funktion begin, wie MySQL LIMIT 1,99
            begin = 1
            // TypoScript Funktion where, wie MySQL WHERE
            where = (header LIKE '%TYPO3%')
        }

        // *****
        // 2. Teil des TYPO3 CONTENT Object, kümmert sich um das Rendering der Ergebnisse
        // *****

        renderObj = COA
        renderObj {
            // Ausgabe der Datensatz uid's
            10 = TEXT
            10.field = uid
            10.noTrimWrap = |uid: | - |
            // Ausgabe der Überschriften (header)
            20 = TEXT
            20.field = header
            20.noTrimWrap = || - |
            // Und der subheader AS Beschreibung
            30 = TEXT
            30 {
                field = Beschreibung
                // Anzahl Zeichen auf 30 begrenzen und HTML entfernen
                crop = 30|...
                stripHtml = 1
                noTrimWrap = ||,<br>|
            }
        }
    }

}

Die TypoScript DB-Abfrage sieht jetzt, wenn es eine SQL Abfrage wäre, so aus:

SELECT uid, header FROM tt_content
WHERE pid = 1 AND header LIKE '%TYPO3%'
GROUP BY crdate ORDER BY uid DESC
LIMIT 1,99

Spezielle Parameter bei der pidInList Funktion

  • pidInList = this
    Das this bezieht sich auf die aktuelle Seiten ID also die Seite auf der die Datenbankabfrage gerade stattfindet.
  • pidInList = root
    TYPO3 Select von der Root-Seite der Seitenzweigs aus (Id 0, oder pid = 0).
  • pidInList = root,-1
    TypoScript Abfrage auf Seiten aus einer Workspace Version.