Цитата: 1) В папке articles, создай файл articlspokat.tpl и в него вставь указанный код
{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}
Давай... Вот мой шаблон, переделанный уже под мои нужды:
{if $last_statii_array}
{foreach from=$last_statii_array item=laststatii}
<br>
<span class="red">{$laststatii.time_start|date_format:"%d.%m.%Y"}</span>
<br>
{$laststatii.title}
<br><br>
{/foreach}
{/if}
Цитата: 2) В файле inc\functions.php после <?php
!!! обрати внимание, что я изменил название функции!!!
вставляй вот это
function artpokat($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;
}
Да без разницы, как ты функцию назовёшь. Вставил. Предыдущие функции, что ты давал, удалил.
Цитата: 3) в обоих файлах class\Koobi.Class и class\tpl\Koobi.Class в любом месте среди строчек где перечисляется регистрация функций пропиши
$this->register_function('artpokat', 'artpokat');
Поменял старые две на эту одну.
Цитата: 4) Все, теперь в файле startpage.tpl впиши вот это
{ artpokat KatId='3,4' limit='2' zag='заголовок' }
Обрати внимание, какой категории статей соотвотствует значение поля articlecat в базе в таблице articles. У меня лично есть 3 категории "Категория1" "Категория2" "Категория3" и по данному запросу функция выводит статьи из категорий 2 и 3......Видишь в чем разница.....Категория создана третьей по счету, а значение у нее 4!!!!!
Зачем так сложно, ID категории сразу видно, если в админке зайдёшь в категории статей и посмотришь ссылку на категорию. В моём случае - это index.php?p=articles&categ=2
Категория 2.
Значится так. Мне в startpage.tpl это совсем не нужно, там у меня выводятся, как и положено последние 10 новостей сайта. А названия статей этой категории мне нужно выводить на всех страницах сайта, включая и главную, в небольшом блоке в левой части сайта. Для этого блока у меня создан специальный темплейт other/reviews.tpl. Этот темплейт подгружается в main_template инклюдом. Вот в этот темплейт и я вставил {artpokat KatId='2' limit='5'}.
Тмплейт приобрёл такой вид:
<table width="279" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="32" class="box_left3">
<img src="{$img_folder}/bg3.gif" alt="" width="32" height="4"></td>
<td class="boxText3"><br>
<span class="boxTitle1">{$lang.reviews}</span>
<br>
<br>
{artpokat KatId='2' limit='5'}
<div align="right"><img src="{$img_folder}/punkt1.gif" alt="" width="10" height="6"><span class="more"><a href="index.php?area=2&p=articles&categ=2" class="A1">{$lang.reviews_all}</a> </span></div></td>
<td width="28" class="box_right4"><img src="{$img_folder}/bg5.gif" alt="" width="42" height="9"></td>
</tr>
</table>
Проверил, в этом варианте вроде заработало, спасибо. Тока пришлось несколько изменить функцию, чтобы дата публикации выводилась тоже. По дефолту там не было вывода даты.
Переделанная функция будет выглядеть так:
function artpokat($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,
time_start
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."";
$last_threads[$i]['time_start'] = $row->time_start;
$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;
}
А выводить дату будем так:
{$laststatii.time_start|date_format:"%d.%m.%Y"}
Теперь, благодаря помощи arcanum и MegaLitr один из основных вопросов по выводу новостей и статей в Куби благополучно решён. Пора, кстати, начинать писать сборник примеров SAPI Кубика. А то ведь никакого мануала по SAPI нету. Всё методом тыка.