Mit getText in generischen Markern auf tt_content zugreifen
Heute benötigte ich innerhalb eines generischen Markers von tt_news Zugriff auf das Content-Element, in dem die Meldung angezeigt wird (also die Plugin-Einbindung). Warum man sowas braucht? Naja, Projekte entwickeln sich manchmal kreativ… 😉
Generische Marker werden im Zuge des Renderings der einzelnen Newsmeldungen ausgewertet, d.h. der Zugriff über field etc. ist jeweils auf den tt_news-Datensatz, nicht auf das Inhaltselement. Der Datensatz selbst hat auch keine Verknüpfung zum Inhaltselement. 🙁
Die Kollegen der marit.ag haben vor Längerem den Artikel „Datenbankfelder dynamisch per stdWrap.data auslesen“ verfasst. Damit ließe sich (via „getText“) auf beliebige Datensätze dynamisch zugreifen wie folgt:
genericmarkers {
ceheader >
ceheader = TEXT
ceheader {
// @see http://blog.marit.ag/2009/12/15/datenbankfelder-stdwrap-data/
dataWrap = DB:tt_content:{field:pid}:header
wrap3 = {|}
insertData=1
}
}
Es bleibt aber die Problematik, dass wir die uid des tt_content-Datensatzes dennoch nicht kennen. Hilfe bringt aber der Inhalt von TSFE: dort gibt es einen Wert currentRecord:
This is set to the [table]:[uid] of the record delivered in the $data-arraySomit lässt sich der Ansatz erweitern, indem im dataWrap der Teilstring „[table]:[uid]“ dynamisch ersetzt wird:
genericmarkers {
ceheader >
ceheader = TEXT
ceheader {
// @see http://blog.marit.ag/2009/12/15/datenbankfelder-stdwrap-data/
//dataWrap = DB:tt_content:{cObj:TSFE:parentRecordNumber}:header
// {TSFE:currentRecord} liefert etwas in der Art "tt_content:1234"
dataWrap = DB:{TSFE:currentRecord}:header
wrap3 = {|}
insertData=1
}
}
Super-Beitrag, nach dem ich fast das halbe Netz umgegraben habe und kurz vorm Verzweifeln war. Jeder Beitrag beschreibt {field:uid} im Zusammenspiel mit der Datenbanktabelle, funktioniert leider nur nicht. Dieser Tipp ist Gold wert. Danke Julian!