Всем привет!
Появилась задача вывести на странице топика, к примеру, после комментариев, топики из текущего блога.
Т.е. читая топик из блога «Сайты на LiveStreet», в конце топика видим список топиков (через topic_list) из этого же блога.
Спустя какое-то время удалось это сделать через метод
GetTopicsByBlog().
Написал в шаблоне (в любом файле, к примеру, в конце comment_tree.tpl или в своем tpl)
(да, знаю, что так нельзя) примерно такое:
{assign var="oBlog" value=$oTopic->getBlog()}
{assign var="aTopics" value=$LS->Topic_GetTopicsByBlog($oBlog,1,4)}
{assign var="aTopics" value=$aTopics.collection}
{include file='topic_list.tpl'}
Дальше идем в
topic_list.tpl для того, чтобы убрать дубляж (чтобы в списке топиков не выводился тот, который читаем). Находим этот цикл:
{foreach from=$aTopics item=oTopic}
{if $LS->Topic_IsAllowTopicType($oTopic->getType())}
{assign var="sTopicTemplateName" value="topic_`$oTopic->getType()`.tpl"}
{include file=$sTopicTemplateName bTopicList=true}
{/if}
{/foreach}
Изменяем его на это (добавил переменную для текущего топика, не знаю, может есть стационарная):
{if $oTopic}{$CurrTopic=$oTopic->getId()}{/if}
{foreach from=$aTopics item=oTopic}
{if !$oTopic || $oTopic->getId()!=$CurrTopic}
{if $LS->Topic_IsAllowTopicType($oTopic->getType())}{assign var="sTopicTemplateName" value="topic_`$oTopic->getType()`.tpl"}
{include file=$sTopicTemplateName bTopicList=true}{/if}
{/if}
{/foreach}
В результате должно получится так, что на странице топика, после комментариев будет выводиться 4 последних топика из текущего блога. Если нужны топики из конкретного блога, то необходимо заменить
{assign var="aTopics" value=$LS->Topic_GetTopicsByBlog($oBlog,1,4)}
на это
{assign var="aTopics" value=$LS->Topic_GetTopicsByBlogId(BLOG_ID, 1, 10, array ('blog'), false)}
где
BLOG_ID это id необходимого блога.