Hallo, ich probiere mich grad darin, meine Seite auf smarty umzustricken.
Mitlerweile kan ich auch schon erste Erfolge verzeichnen

Allerdings macht mir ein News-Syste noch immer größere Probleme.
Zunächst mal der Code meiner index.php:
PHP-Code:
<?php
define('SMARTY_DIR', '/is/htdocs/47449/www.alkbrueder.de/smarty_alkbrueder/smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$tpl_ct = new smarty();
$tpl = new smarty();
include('thwbnews.php');
newstpl($tpl_ct);
$tpl->assign_by_ref('ct', $tpl_ct->fetch('templates/newsrow.html'));
$tpl->display('templates/index.html');
?>
Nun ein Code-Ausschnitt aus der thwbnews.php, wie ich ihn bisher verändert habe:
PHP-Code:
while( list(, $thread) = each($a_thread) )
{
if( $maxchars && strlen($thread['posttext']) > $maxchars )
{
$newtext = substr($thread['posttext'], 0, $maxchars);
for( $i = $maxchars; $i < strlen($thread['posttext']); $i++ )
{
if( $thread['posttext'][$i] == ' ' || $thread['posttext'][$i] == "\n" )
break;
$newtext .= $thread['posttext'][$i];
}
$more = '<a href="'.$thwbpath.'showtopic.php?threadid='.$thread['threadid'].'"><img src="templates/images/for.gif" border="0" align="right"></a>';
$thread['posttext'] = $newtext;
}
else
{
$more = '<a href="'.$thwbpath.'showtopic.php?threadid='.$thread['threadid'].'"><img src="templates/images/for.gif" border="0" align="right"></a>';
}
$tpl_ct->assign('topic', parse_code($thread['threadtopic']));
$tpl_ct->assign('date', date($date_format, $thread['threadcreationtime']));
$tpl_ct->assign('author', $thread['threadauthor']);
$tpl_ct->assign('more', $more);
$tpl_ct->assign('text', parse_code($thread['posttext'], 1, 1, 1, 1));
}
Nun der selbe Teil, wie er im Original aussieht:
PHP-Code:
$tpl_newsrow = file_get_contents("content/newsrow.html");
...
$news_output = '';
while( list(, $thread) = each($a_thread) )
{
if( $maxchars && strlen($thread['posttext']) > $maxchars )
{
$newtext = substr($thread['posttext'], 0, $maxchars);
for( $i = $maxchars; $i < strlen($thread['posttext']); $i++ )
{
if( $thread['posttext'][$i] == ' ' || $thread['posttext'][$i] == "\n" )
break;
$newtext .= $thread['posttext'][$i];
}
$more = '<a href="'.$thwbpath.'showtopic.php?threadid='.$thread['threadid'].'"><img src="images/for.gif" border="0" align="right"></a>';
$thread['posttext'] = $newtext;
}
else
{
$more = '<a href="'.$thwbpath.'showtopic.php?threadid='.$thread['threadid'].'"><img src="images/for.gif" border="0" align="right"></a>';
}
$row = $tpl_newsrow;
$row = str_replace('{more}', $more, $row);
$row = str_replace('{topic}', parse_code($thread['threadtopic']), $row);
$row = str_replace('{text}', parse_code($thread['posttext'], 1, 1, 1, 1), $row);
$row = str_replace('{author}', $thread['threadauthor'], $row);
$row = str_replace('{date}', date($date_format, $thread['threadcreationtime']), $row);
$row = str_replace('{threadid}', $thread['threadid'], $row);
$row = str_replace('{commentcount}', $thread['threadreplies'], $row);
$news_output .= $row;
}
...
print $news_output;
Bei meiner abgeänderten Version besteht der Fehler darin, dass nur ein Eintrag aus DB gelesen und später ausgegeben wird. Das liegt daran, dass ich, nicht wie im Original, alle Einträge zunächst in der Variable $news_output speichern und später ausgeben kann.
Wie ist es dennoch möglich, alle Einträge per smarty auszugeben?
Wäre nett, wen ihr mir einen Lösungsweg konkret an diesem Beispiel erklären könntet, da ich mich erst seit wenigen Tagen überhaupt mit dieser Template-Engine beschäftige.
Danke!