Zum Inhalt springen

Templates richtig verwenden?

Erstellt am 26. April 2007 · 2 Antworten · letzte Antwort am 27. April 2007

Tags: Templates & Layouts, Frage

Sturmi ·

Hallo,

ich habe vor einiger Zeit mal auf Basis von PHP und MySQL ein eigenes Forum geschrieben und nun möchte ich es als Typo3-Extension neu aufbauen.

Das Template für die Foren-Übersicht sieht im Moment so aus:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<!-- ###TEMPLATE### begin -->
<div class="###FOREN_LIST_GESAMT###">
<table width="100%" border="0" cellspacing="1" cellpadding="5" summary="Auflistung der Foren" class="###TABLE_LIST###">
<!-- ###CONTENT### begin -->
<!-- ###KATEGORIE### begin -->
  <tr>
    <td colspan="4" align="left" valign="middle" class="###CLASS_CAT###">###KATEGORIE_ITEM###</td>
  </tr>
  
  <tr>
    <td class="###CELL_HEAD###" align="left" valign="top">###FORUM###</td>
    <td class="###CELL_HEAD###" align="center" valign="top">###THEMEN###</td>
    <td class="###CELL_HEAD###" align="center" valign="top">###POSTS###</td>
    <td class="###CELL_HEAD###" align="center" valign="middle">###LAST_POST###</td>
  </tr>
<!-- ###KATEGORIE### end -->
<!-- ###ITEM### begin -->
  <tr>
    <td class="###CELL###" align="left" valign="top">###FORUMNAME### <div class="###FORUMDESCRIPTION###">###FORUMDESC###</div></td>
    <td class="###CELL###" align="center" valign="top">###T_COUNT###</td>
    <td class="###CELL###" align="center" valign="top">###P_COUNT###</td>
    <td class="###CELL###" align="center" valign="top">###LAST_POSTER###</td>
  </tr>
  <!-- ###ITEM### end -->
  <!-- ###CONTENT### end -->
  
</table>
</div>
<!-- ###TEMPLATE### end -->
</body>
</html>

Ich bin mir nicht sicher, ob ich die Subparts richtig im Template angegeben habe.

Die Marker ###FORUM###, ###THEMEN###, ###POST###, ###LAST_POST### werden ganz normal durch statischen Inhalt ersetzt.

Der Marker ###KATEGORIE_ITEM### wird durch den Inhalt aus der DB mit der Kategorie-Bezeichnung ersetzt. ###FORUMNAME### der Titel des Forums .... etc...
Irgendwie klappt das bei der Ausgabe nicht.

Der Subpart <!-- ###KATEGORIE### begin --><!-- ###KATEGORIE### end --> soll einmal wiederholt werden und danach der Subpart <!-- ###ITEM### begin --><!-- ###ITEM### end --> solange, bis keine Foren mehr in der jeweiligen Kategorie vorhanden sind.

Mein bisheriges Plugin sieht so aus:

//Content leeren
				  $content = "";
				  //Marker initialisieren
				  $marker = array();
				  $markerforum = array();
				  
				  
				  
				  //Template laden...
				  $this->templateCode = $this->cObj->fileResource($this->conf['templateFile']);
				  
				  //Parts aus dem Template laden...
				  $template['total'] = $this->cObj->getSubpart($this->templateCode, '###TEMPLATE###');
				  $template['content'] = $this->cObj->getSubpart($template['total'], '###CONTENT###');
				  $template['kategorie'] = $this->cObj->getSubpart($template['content'], '###KATEGORIE###');
				  $template['item'] = $this->cObj->getSubpart($template['content'], '###ITEM###');
				  
				  
				  
				  
				  
				  //Abfrage der Kategorien
				  $res = $GLOBALS["TYPO3_DB"]->exec_SELECTquery("*", "tx_contrixxportal_kategorie", "deleted=0 AND hidden=0");
				  while($row = $GLOBALS["TYPO3_DB"]->sql_fetch_assoc($res)) {
				  $marker["###FORUM###"] = "Forum";
				  $marker["###THEMEN###"] = "Themen";
				  $marker["###POSTS###"] = "Posts";
				  $marker["###LAST_POST###"] = "Letzter Beitrag";
				  $marker["###KATEGORIE_ITEM###"] = $row['kategorie'];
				  
				  $content_item .= $this->cObj->substituteMarkerArrayCached($template['kategorie'],$marker);
				  
				  
				  //Abfrage der Foren
				  $res2 = $GLOBALS["TYPO3_DB"]->exec_SELECTquery("*", "tx_contrixxportal_forum", "deleted=0 AND hidden=0");
				  while($row2 = $GLOBALS["TYPO3_DB"]->sql_fetch_assoc($res2)) {
				  $markerforum["###FORUMNAME###"] = $row2['forumname'];
				  
				  $content_item2 .= $this->cObj->substituteMarkerArrayCached($template['item'],$markerforum);
				  } //Ende der inneren While-Schleife
				  
				  
				  $subpartArray2["###CONTENT###"] = $content_item2;
				  $content .= $this->cObj->substituteMarkerArrayCached($template['content'],array(), $subpartArray2);
				  
				  } //Ende der 1 While-Schleife
				  
				  
				  
				  $subpartArray["###CONTENT###"] = $content_item;
				  
				  $content .= $this->cObj->substituteMarkerArrayCached($template['total'],array(), $subpartArray);
				  
		
	
		
		
		return $this->pi_wrapInBaseClass($content);

Bin für jede Hilfe sehr dankbar.

Sturmi ·

Danke .... ich habe es irgendwie hinbekommen, indem ich mit den substitute-Funktionen von Typo3 etwas rumexperimentierte.