Manchmal benötige ich den Output von Content Elementen in meinen Frontend Plugins, die es in gewünschter Form in der Tabelle tt_content nicht gibt. Wie nutze ich nun die Tabelle tt_content in meinem Plugin möglichst effizient zur Ausgabe von schon vorhandenen Typo3-Contentelementen?
Beispiel:
Ich habe in meinem Frontend Plugin ein eigenes Content Element definiert, dass folgende Felder befüllen läßt:
- header
- subheader
- menu_type
Im Frontend soll (umgeben von einem Div-Wrap) zuerst ein headline- und dann ein Menu-Contentelement ausgegeben werden.
Fragestellung:
Wie rendere ich mit den Daten meines Contentelements nacheinander die gewünschten Contentelemente?
Ganz einfach:
/** Die Main-Function des Frontend-Plugins **/
function main($content, $conf) {
// Wir rendern die Headline
$cObj1 = t3lib_div::makeInstance('tslib_cObj');
$temp = $this->cObj->data;
$temp['CType'] = 'header';
$cObj1->start($temp, 'tt_content');
$content .= $cObj1->cObjGetSingle('<tt_content','',array());
// Wir rendern das Menu
$cObj2 = t3lib_div::makeInstance('tslib_cObj');
$temp = $this->cObj->data;
$temp['CType'] = 'menu';
$cObj2->start($temp, 'tt_content');
$content .= $cObj2->cObjGetSingle('<tt_content','',array());
return $this->pi_wrapInBaseClass($content);
}
Voila: Wir haben mit ein- und dem selben Datensatz aus tt_content zuerst eine Headline und dann ein Menu gerendert. Vorteil im Backend: Der User muß nur ein Contentelement pflegen – Bekommt im Frontend aber 2 gerendert.