Hallo!
Wie kann ich in meiner Extension ein alternierendes Layout realisieren? In der Ausgabe benötige ich eine HTML-Tabelle mit Zeilen, die jeweils 2 TDs haben. Also so:
<table>
<tr>
<td> Datensatz_1 </td>
<td> Datensatz_2 </td>
</tr>
<tr>
<td> Datensatz_3 </td>
<td> Datensatz_4 </td>
</tr>
...
</table>
<td> Datensatz_ODD </td> hätte dann ein Layout und <td> Datensatz_EVEN </td> ein anderes (also die ungeraden eines und die geraden ein anderes).
Mein Template hat normalerweise 2 Teilbereiche - 1. den umfassenden und 2. einen, der Teil des 1. Teilbereiches ist. Bei meinem alternierenden Layout brauche ich aber 3 Teilbereiche - den umfassenden und 2 untergeordnete Teilbereiche. Das heißt für jeden der beiden alternierenden Layouts einen.
Mit...
// odd|even mit bit-operatoren
$content .= ($zaehler & 1) ? $this->cObj->substituteMarkerArrayCached($tmpl_eintrag_odd, $marker) : $this->cObj->substituteMarkerArrayCached($tmpl_eintrag_even, $marker);
...kann ich in der Schleife feststellen, wann ein gerader und wann ein ungerader Datensatz an der Reihe ist.
Ich hatte mit: $this->cObj->substituteMarkerArrayCached($tmpl;$marker); und abschließend mit:
this->cObj->substituteSubpart($tmpl;###MARKER###;$content);
gearbeitet, aber das alternierende Layout nicht bekommen.
Gruß Renè
Hallo Tetramatrix,
der Link geht auf das 'HTML-Templating Tutorial' und das läßt keine Frage offen.
Ich habe mein 2-Spalten-Layout in einer HTML-Tabelle so gemacht:
das 2-Spalten-Template:
<h3>MYTEMPLATE</h3>
<em>This is the alternative rows html template</em>
<!-- ###MYTEMPLATE### begin -->
<table>
<!-- ###SINGLEROW### begin -->
<!-- ###ITEM### -->
<tr>
<td>###MARKER1### ###MARKER2###</td>
<!-- ###ITEM### -->
<!-- ###ITEM_ALT### -->
<td>###MARKER1### ###MARKER2###</td>
</tr>
<!-- ###ITEM_ALT### -->
<!-- ###SINGLEROW### end -->
</table>
<!-- ###MYTEMPLATE### end -->
Das PHP dazu:
# Die Template-Datei liegt wo?
$this->templateCode = $this->cObj->fileResource($this->conf['templateFile']);
# Die Subparts aus dem Template holen
$template['total'] = $this->cObj->getSubpart($this->templateCode,'###MYTEMPLATE###');
$template['singlerow'] = $this->cObj->getSubpart($template['total'],'###SINGLEROW###');
$template['row'] = $this->cObj->getSubpart($template['singlerow'],'###ITEM###');
$template['row_alt'] = $this->cObj->getSubpart($template['singlerow'],'###ITEM_ALT###');
$switch_row = 0;
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
# Content in das Marker-Array
$markerArray['###MARKER1###'] = $row['username'];
$markerArray['###MARKER2###'] = $row['price'];
# Datensätze abwechselnd den beiden Subparts '###ITEM###' und '###ITEM_ALT###' zuweisen (den beiden Spalten im Template)
$switch_row = $switch_row ^ 1;
if($switch_row) {
$content_item .= $this->cObj->substituteMarkerArrayCached($template['row'], $markerArray, array(), array());
} else {
$content_item .= $this->cObj->substituteMarkerArrayCached($template['row_alt'], $markerArray, array(), array());
}
}
$subpartArray['###SINGLEROW###'] = $content_item;
$content = $this->cObj->substituteMarkerArrayCached($template['total'], array(), $subpartArray, array());
return $content;
Danke für die schnelle Hilfe
Renè