Wenn ein Templatefile im TypoScript konfiguriert ist,

dann lese die Datei ein

und ersetze alle Marker (die Keyvalues des markerarrays werden in Großbuchstaben gewandelt und in '###' gewrapt).

 

if ($conf['templatefile']) {
	$template=$this->cObj->fileResource($conf['templatefile']);
} else {
	// by default use the file 'template.html' provided by this extension
	// in the subdirectory 'tpl'
	$template=$this->cObj->fileResource('EXT:'.$this->extKey.'/tpl/template.html');
}
if (!$template || strlen($template)==0) {
	$template=$this->pi_getLL('no_template');	
}

// get main block:
$mainTemplate = $this->cObj->getSubpart($template, '###MAINPART###');
// get Item block and replace marker 
$itemTemplate = $this->cObj->getSubpart($mainTemplate, '###ITEMS###');
// render over all items and gather results:
$items = '';
foreach ($dataArray as $itemRecord) {
        $itemMarkerArray = $itemRecord;
        $items .= $this->cObj->substituteMarkerArray($itemTemplate,$itemMarkerArray,'###|###',$uppercase=1);
}
// replace subblock with sum of all items
$mainTemplate = $this->cObj->substituteSubpart($mainTemplate,'###ITEMS###',$items,$recursive=0,$keepMarker=0);

//render full template (with replaced item block)
$content.=$this->cObj->substituteMarkerArray($mainTemplate,$markerArray,'###|###',$uppercase=1);

 

Für die Marker kommen z.B. alle Felder einer Tabelle in Frage.

Damit die Felder nicht einfach nur nackt übergeben und ersetzt werden kann man alle Felder per stdWrap konfigurieren (lassen):

foreach ($itemRecord as $key => $value) {
	if ($fieldConf = $this->conf['fieldConfig.'][$key.'.']) {
		$itemMarkerArray[$key] = $this->cObj->stdWrap($value, $fieldConf);
	} else {
		$itemMarkerArray[$key] = $value;
	}
}

ungetestet:

um auch auf andere Felder z.b. eines Datensatzes zugreifen zu können braucht es einen Bezug dorthin. Der könnte durch Zuordnung der Daten erfolgen:

$this->cObj->data = $record;

danach können die Felder von $record im typoscript als {$field:name} benutzt werden. ????

Achtung: werden damit die Daten des aktuellen ContentElementes überschrieben? also eher:

$this->cObj->data = array_merge($this->cObj->data, $record);

???

 
Ihre aktuelle Seitenauswahl:  
>>>