Tento skript je poměrně rozsáhlý a nebudeme ho komentovat. Jen upozorníme na několik detailů:
- výpis se provádní kompletně jen v jednom cyklu, aby nebyl žádný výpis na více místech
- toto celkem znepřehlednilo tento kód, ale doufáme, že poskytne alespoň nějakou motivaci
- na úvodu je možné nastavit počet sloupců a řádků prvotního výpisu a dále řádkového výpisu
- je nutné doplnit CSS
<? define("PEREX_MAXLEN",150); $v_cols=2; $v_rows=3; $v_list=20; $v_plist=80; $pfrom=(int)$pfrom; if($cat>=0) { $tc=&$site->GetCat($cat ? $cat : $SysParam["CatSections"]); $items=&$site->GetItems($tc->GetSubCatsVector(),DTYPE_PAGE,array("data7","pdate DESC","idate DESC"),$pfrom,$v_plist+1); } else { $items=&$site->GetItemsEx("SELECT * FROM $tblItems WHERE (INSTR(LCASE(data1),'".strtolower($stext)."') OR INSTR(LCASE(data3),'".strtolower($stext)."') OR INSTR(LCASE(data11),'".strtolower($stext)."')) AND type=".DTYPE_PAGE,array("data7","pdate DESC","idate DESC"),$pfrom,$v_plist+1); } $items->RemoveUnpublished(); if($cat>=0&&$items->Count()==1) { //přímé zobrazení článku pokud je jen jeden v adresáři $pitem=&$items->Items(0); $art=$pitem->Index(); $page="page"; include "pages/$page.php"; } else { $rl=1; $re=0; $cnt=($items->Count()<($pfrom ? $v_plist : $v_cols*$v_rows+$v_list) ? $items->Count() : ($pfrom ? $v_plist : $v_cols*$v_rows+$v_list)); for($c=0;$c<$cnt;$c++) { $pitem=&$items->Items($c); $pimage=$pitem->PublishImage(); $autor=&$site->GetUser($pitem->Owner()); $link=$pitem->GetLink(); if($rl&&($v_rows*$v_cols==$c||$pfrom)) { $rl=0; } if(!$rl) { if(!$re) { if(!$pfrom) Grid_End($v_cols,$c+1); echo "<table width="100%" cellpadding="0"><tr><td class="clnazev" colspan="3">"; Header_Print("Ostatní články"); echo "</td></tr>"; $re=1; } } if($rl&&!$c) Grid_Start(" width="100%" border="0" cellpadding="0" cellspacing="0""); if($rl&&!$re) Grid_Next($v_cols,$c+1," valign="top"","<td> </td>"); if($rl) { ?> <table width="100%" cellpadding="0"> <tr><td class="clnazev"><?Header_Print(str_replace(" "," ",$pitem->Name()),$link);?></td></tr> <tr><td class="clzahlavi"> <?echo Date("j.m.Y",$pitem->PublishDate()); echo " - <a href="index.php?$loginparam"."page=zprava&idx=".$pitem->Index()."">"; echo !$autor->Anonymous() ? $autor->Name() : "anonymně"; echo "</a>";?> <div class="clfloatright"><?$catitem=&$site->GetCat($pitem->Cat());?><a href="index.php?<?echo $loginparam;?>cat=<?echo $catitem->Index();?>"><?echo $catitem->Caption();?></a></div> </td></tr> <tr><td class="clpopis"> <?if($pimage) { $image=$site->GetItem($pimage);?><a href="<?echo $link;?>"><img alt="" class="tit" src="<?echo $image->GetLink(1,"mw=80");?>" border="0"></a><? } ?> <?echo strlen($pitem->Description())>PEREX_MAXLEN ? substr($pitem->Description(),0,PEREX_MAXLEN)."..." : $pitem->Description();?> </td></tr> <tr><td class="clzapati"><a href="<?echo $link;?>"><img alt="" src="img/tl_button.gif" border="0"> Více</a><?if($pitem->DiscussionAllowed()):?> | <a href="index.php?<?echo $loginparam."page=disc&disc=".$pitem->Index();?>">Diskuze - <?echo $pitem->GetDiscussionNotesCount(); $latest=$pitem->GetDiscussionLatestNotesCount(); if($latest) echo " ($latest)";?> příspěvků</a><?EndIf;?></td></tr> </table> <? } else { ?> <tr><td class="cllnazev"><a href="<?echo $link;?>"><?echo $pitem->Name();?></a></td><td class="cllzahlavi"><?echo Date("j.m.Y",$pitem->PublishDate());?></td><td class="cllzapati"><a href="<?echo $link;?>"><img alt="" src="img/tl_button.gif" border="0"> Více</a><?if($pitem->DiscussionAllowed()):?> | <a href="index.php?<?echo $loginparam."page=disc&disc=".$pitem->Index();?>">Diskuze - <?echo $pitem->GetDiscussionNotesCount(); $latest=$pitem->GetDiscussionLatestNotesCount(); if($latest) echo " ($latest)";?> příspěvků</a><?EndIf;?></td></tr> <? } } if(!$rl) { if($c+1<$items->Count()) { ?> <tr><td class="clzapati" colspan="3"><a href="index.php?<?echo $loginparam?>pfrom=<?echo $c;?>"><img alt="" src="img/tl_button.gif" border="0"> Daląí články</a></td></tr> <? } echo "</table>"; } if(!$items->Count()) { Header_Print("Ostatní články"); echo "ľádné články"; } } ?>
|