Diskuse

Téma: Výpis témat z diskusí

Na webu mám asi 5 diskusních fór. Na hlavní straně potřebuji vypisovat nejnovější témata z těch pěti. Snažil jsem se upravit HCM recentposts, ale pořád dělá to, k čemu byl navržen. Vypisuje každý příspěvek. Takže se mi tam jedno téma objeví třeba 5x díky tomu, že tam někdo odpovídá. Můžete to upravit tak, aby se vypisovali témata pouze jednou? Díky

<?php
/*--- kontrola jadra ---*/
if(!defined('_core')){exit;}
/*--- definice funkce modulu ---*/
function _HCM_nejnovejsi($limit=null, $stranky="", $typ=null){
//priprava
$result="";
if(isset($limit) and intval($limit)>=1){$limit=abs(intval($limit));}else{$limit=10;}
//filtr cisel sekci, knih nebo clanku
if(isset($stranky) and isset($typ)){
$rtype=intval($typ);
if($rtype<1 or $rtype>3){$rtype=1;}
$rroots="("._sqlWhereColumn("home", $stranky).") AND type=".$rtype;
}
else{
$rroots="type!=4";
}
$query=mysql_query("SELECT id,type,home,xhome,subject,author,guest,time,text FROM `"._mysql_prefix."-posts` WHERE ".$rroots." ORDER BY id DESC LIMIT ".$limit);
while($item=mysql_fetch_array($query)){
//nacteni titulku a odkazu na stranku
switch($item['type']){
case 1: case 3: $homelink=_linkRoot($item['home']); $hometitle=mysql_fetch_array(mysql_query("SELECT title FROM `"._mysql_prefix."-root` WHERE id=".$item['home'])); break;
case 2: $homelink=_linkArticle($item['home']); $hometitle=mysql_fetch_array(mysql_query("SELECT title FROM `"._mysql_prefix."-articles` WHERE id=".$item['home'])); break;
case 5:
if($item['xhome']==-1){
$tid=$item['id'];
$hometitle=array("title"=>$item['subject']);
}
else{
$tid=$item['xhome'];
$hometitle=mysql_fetch_array(mysql_query("SELECT subject FROM `"._mysql_prefix."-posts` WHERE id=".$item['xhome']));
$hometitle=array("title"=>$hometitle['subject']);
}
$homelink="index.php?m=topic&amp;id=".$tid;
break;
}
//nacteni jmena autora
if($item['author']!=-1){$authorname=_linkUser($item['author'], null, true, true);}
else{$authorname=$item['guest'];}
$hometitle=$hometitle['title'];
$result.="
<tr class='tema-obsah'><td style='width:50%'><a href='".$homelink."'>".$hometitle."</a></td><td><a href='/index.php?m=profile&id=".$authorname."'>".$authorname."</a></td><td style='width:25%'>"._formatTime($item['time'])."</td></tr>
";
}
return $result;
}
?>
postZaslat odpověď
Tak jsem přidal do $hometitle dotazu xhome=-1 a omezil jsem titulky. Problém je v tom, že ve výsledku je autor a datum. Potřeboval bych nějakou podmínku, že když se obsah $hometitle nezobrazí neukáže se celý řádek $result.
Takže jsem otravoval Shiru a on mi napsal nový modul. Tady ho máte.
[hcm]nejnovejsi,10,6-7-8-9-10[/hcm] (limit, ID diskusí)

<?php
/*--- kontrola jadra ---*/
if(!defined('_core')) {
exit;
}
/*--- definice funkce modulu ---*/
function _HCM_nejnovejsi($limit = 1, $fora = null)
{

// promenna pro vystup
$output = '';

// zpracovani argumentu
if(!empty($fora)) {
$fora = ' AND ('._sqlWhereColumn('home', $fora).')';
}
$limit = (int)$limit;
if($limit < 1) {
$limit = 1;
}

// sql dotaz
$temata = mysql_query('SELECT `id`,`type`,`home`,`xhome`,`subject`,`author`,`guest`,`time` FROM `'._mysql_prefix.'-posts` WHERE `type`=5 AND `xhome`=-1'.$fora.' ORDER BY `id` DESC LIMIT '.$limit);
while($tema = mysql_fetch_assoc($temata)) {
$output .= '<tr class="tema-obsah"><td style="width:50%"><a href="index.php?m=topic&amp;id='.$tema['id'].'">'.$tema['subject'].'</a></td><td>'.(($tema['author'] == -1) ? $tema['guest'] : _linkUser($tema['author'])).'</td><td style="width:25%">'._formatTime($tema['time']).'</td></tr>'._nl;
}

// vystup
return $output;

}

?>