Автор: MasterDaemon
Дата сообщения: 22.09.2006 19:21
2 chestertech
если я не ошибась, а я очень невыстпался, то этот вопрос уже имел место быть на форуме и ответ на него такой:
Вывод новостей на главной по категориям
ля добавления в куби функции вывода новостей и статей по категориям добавляем:
в /class/tpl/koobi.class.php после строки $this->register_function('lastthreads', 'getLastForumPosts');
вот это:
$this->register_function('newspokat', 'getNewsPoKat');
$this->register_function('articliespokat', 'getStatiiPoKat');
и в functions.php перед function krand($min, $max)
// ========================================================
// <<-- Novosti blokami po kategoriam -->>
// naprimer: {lastthreads KatId='1,2,3,4,5' limit='5' zag='Kakoeto nazvanie'}
// ========================================================
function getNewsPoKat($param)
{
global $db,$THEME,$area;
$last_threads = array();
$tmpl = new Koobi("templates/");
$fids = str_replace(",", ' OR newscat = ', $param['KatId']);
$sql = $db->Query("
SELECT
newsid,
title,
text
FROM " . PREFIX . "_news WHERE newscat =".$fids." AND area_id = ".$area." AND ispublic = 1 order by newsid desc LIMIT " . $param['limit']);//catname = `".$fids."`
$i = 0;
while ($row = $sql->fetchrow()) {
$last_threads[$i]['text'] = $row->text;
$last_threads[$i]['title'] = $row->title;
$last_threads[$i]['links'] = "index.php?area=".$area."&p=news&newsid=".$row->newsid."";
$i++;
}
$tmpl->assign('zagolovok', $param['zag']);
$tmpl->assign('theme', $THEME);
$tmpl->assign('last_news_array', $last_threads);
$newspokat = $tmpl->fetch("$THEME/news/newspokat.tpl");
return $newspokat;
}
// ========================================================
// <<-- Cmambu blokami po kategoriam -->>
// naprimer: {lastthreads KatId='1,2,3,4,5' limit='5' zag='Kakoeto nazvanie'}
// ========================================================
function getStatiiPoKat($param)
{
global $db,$THEME,$area;
$last_threads = array();
$tmpl = new Koobi("templates/");
$fids = str_replace(",", ' OR articlecat = ', $param['KatId']);
$sql = $db->Query("
SELECT
id,
title,
content,
inline_screens,
type
FROM " . PREFIX . "_articles WHERE articlecat =".$fids." AND area = ".$area." AND active = 1 order by id desc LIMIT " . $param['limit']);//catname = `".$fids."`
$i = 0;
while ($row = $sql->fetchrow()) {
$ishot = '0';
if(($row->inline_screens)!=("a:0:{}"))
{
$ishot = '1';
}else{
$ishot = '0';
}
$text = $row->content;
$text = inlinescreens($row->inline_screens,$text);
$last_threads[$i]['ishot'] = $ishot;
$last_threads[$i]['text'] = $text;
$last_threads[$i]['title'] = $row->title;
$last_threads[$i]['links'] = "index.php?type=".$row->type."&area=".$area."&p=articles&id=".$row->id."";
$i++;
}
$tmpl->assign('zagolovok', $param['zag']);
$tmpl->assign('theme', $THEME);
$tmpl->assign('last_statii_array', $last_threads);
$articliespokat = $tmpl->fetch("$THEME/articles/articlspokat.tpl");
return $articliespokat;
}
после этого в startpage.tpl достаточно добавить в нужном месте
{ articliespokat KatId='5,6' limit='3' zag='заголовок' }
еще понадобится файл templatename/articles/articlspokat.tpl от 5+ вот такого содержания
{if $last_statii_array}
<table width="100%" border="0" cellpadding="3" cellspacing="1" class="box_inner">
{foreach from=$last_statii_array item=laststatii}
<tr>
<td>
<div class="inforel"><strong>{$laststatii.title}</strong></div>
{if $laststatii.ishot != '0'}
<div class="intro" align="justify">{$laststatii.text|truncate:600}</div>
{else}
<div class="intro" align="justify">{$laststatii.text|truncate:200}</div>
<div align="right"><a href="{$laststatii.links}">Подробнее</a></div>
</div>
<div class="news_spacer"></div>
{/if}
</td>
</tr>
{/foreach}
</table>
<br />
{/if}
Thanks MegaLitr
Кстати, по моей просьбе, Анжела собрала на Овере ФАК для новичков и непрограммеров по установке и настройке Кооби 5.х - он удобнее, чем копать форум.