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.