Zum Inhalt springen

alternierendes Layout

Erstellt am 14. Oktober 2006 · 2 Antworten · letzte Antwort am 15. Oktober 2006

Tags: Frage

rene_afew ·

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è

rene_afew ·

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è