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.