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 } } |