Огромное спасибо всем, кто входит в команду CMS Sitebill, разработчикам и группе технической поддержки! Благодоря Вашим усилиям есть возможность пользоваться очень качественным, доступным для каждого продуктом и наверное лучшим движком для сайта недвижимости. Особое уважение вызывает группа технической поддержки за оперативность и профессионализм. Так держать!
Функция выборки
function getMyNewsAssorty(){if(''!=$this->getConfigValue('apps.news.item_alias')){$app_item_alias=$this->getConfigValue('apps.news.item_alias');}else{$app_item_alias='news';}$news=array();$DBC=DBC::getInstance();//Например хотим выбирать из категорий с ид=1 и 2$query='SELECT * FROM '.DB_PREFIX.'_news WHERE `news_topic_id` IN(1,2) ORDER BY `date` DESC'; $stmt=$DBC->query($query);if($stmt){while($ar=$DBC->fetch($stmt)){$ar['href']=SITEBILL_MAIN_URL.'/'.$app_item_alias.$ar['news_id'].'.html';$news[$ar['news_topic_id']][]=$ar;}}return $news;}
Должна быть размещена в /template/frontend/имя_вашего_шаблона/main/main.php внутри class frontend_main extends SiteBill_Krascap { }
ПС. Запрос к БД в функции "жадный". Тут можно оптимизировать, если новостей очень много и надо выбрать только по некоторому количеству для каждой категории, то лучше сделать два запроса на конкретные категории и ограничить их с помощью LIMIT.
Вызов
$this->template->assert('my_news_assorty', $this->getMyNewsAssorty());
размещается в том же файле, но уже внутри функции main(). Не важно в каком месте, но оптимально сразу же после строки global $__site_title, $folder, $smarty;
Вывод (пример)
<!--Вывод новостей из категории 1-->{if $my_news_assorty[1]|count>0}{foreach from=$my_news_assorty[1] item=mynews1}<a href="{$mynews1.href}">{$mynews1.title}</a>{/foreach}{/if}<!--Вывод новостей из категории 2-->{if $my_news_assorty[2]|count>0}{foreach from=$my_news_assorty[2] item=mynews1}<a href="{$mynews1.href}">{$mynews1.title}</a>{/foreach}{/if}
их ставится уже где-то в шаблоне.