Echo yerine $degisken.= yontemiyle birleştirdikten sonra
$smarty->assign('URUN', $degisken); metoduyla atayabilirsin
template tarafında {URUN} e denk gelir.
kodda belirteyim
<?
$sql = $db->sql("SELECT u.id,u.urunad,u.resim,u.indirimlifiyat,u.yazan,u.yeniicon,y.yazar FROM urunler u LEFT JOIN yazarlar y ON y.id=u.yazan where u.nitelik2='gozdekitaplar' ORDER by u.id desc limit 0,50");
$sutun = 5; //Sütun Sayısını Ayarlıyoruz
$td_genislik = number_format(100/$sutun); //td için genişliği ayarlıyoruz
$s = 0;
$urun.='<table width=100%>';
while($yaz = $db->getir($sql))
{
$modeladi = '<table width="100" cellpadding="0" cellspacing="0">
<tbody><tr>
<td align="center" height="180" valign="top"><div style="border: 1px solid rgb(234, 234, 234); padding: 7px; width: 95px;">
<div style="position: absolute;"><img src="dosyalar/'.$yaz[yeniicon].'"></div>
<a href='.seo($yaz[urunad]).'-urunid'.$yaz[id].'.html><img src="dosyalar/'.$yaz['resim'].'" alt="" width="92" border="0" height="156"></a></div></td>
</tr>
<tr>
<td style="padding-top: 5px;" align="center" height="80" valign="top"><font color =red >'.$yaz[yazar].'</font><br><a href='.seo($yaz[urunad]).'-urunid'.$yaz[id].'.html class="minikirmizi">'.$yaz['urunad'].'</a></td></tr>
<tr><td align="center">
<span class="kucuk">Fiyat : <b>'.$yaz['indirimlifiyat'].' </b></span></td>
</tr>
</tbody></table>';
if (($s % $sutun) == 0)
{
$urun.='<tr>';
}
$urun.='<td width='.$td_genislik.'%>'.$modeladi.'</td>';
$s ++;
if (($s % $sutun) == 0)
{
$urun.='</tr>';
}
}
$urun.='</table>';
$smarty->assign('URUN', $urun);
?>ayrıca bunu boyle yaparsan smarty amacına uygun kullanmış olmazsın. önce bunları diziye doldur
while ile dönerken $urunler[]=$yaz; dedikten sonra
$urunler dizisini smartye assign edersin.. template tarafında da
{foreach item="urunler" from="$urunler"}
Adi : {$urunler.adi}
Fiyatı : {$urunler.fiyati}
{/foreach}gibi kullanırsın