Вывод списка последних топиков в блок

Всем привет. Есть ли простой способ (не заморачиваясь с классами и тп) вывести в блок список 5 последних топиков? Пустой блок, скажем, создал.
… и вконец запутался со smarty.

Ответ:

{assign var="aTopics" value=$LS->Topic_GetTopicsByBlogId(__BLOG_ID__, 1, 10, array ('blog'), false)}
{assign var="aTopics" value=$aTopics.collection}
{foreach from=$aTopics item=oTopic}
    <a href="{$oTopic->getUrl()}">{$oTopic->getTitle()|escape:'html'}</a>
{/foreach}

20 комментариев

avatar
Без классов никак
Нужно создать в classes\blocks php файл например BlockFivelast.class.php
В нем
class BlockFivelast extends Block {
{
	public function Exec() {
		if ($aTopicId=$this->Topic_GetTopicsByBlogId('ИД_БЛОГА', 1,5)){
		    $aTopics = $this->Topic_GetTopicsAdditionalData($aTopicId);
    		    $this->Viewer_Assign("aTopics", $aTopics );
                }
	}

}

в шаблоне в blocks\block.fivelast.tpl
...
{foreach from=$aTopics item=oTopic}
    <a href="{$oTopic->getUrl()}">{$oTopic->getTitle()|escape:'html'}</a>
{/foreach}
...

Работу не проверял.
avatar
на самом деле можно и без классов, но это «не красиво с точки зрения модели MVC»:
{assign var="aTopics" value=$LS::E()->Topic_GetTopicsByBlogId('ИД_БЛОГА', 1, 5, array (), false)}
{foreach from=$aTopics item=oTopic}
    <a href="{$oTopic->getUrl()}">{$oTopic->getTitle()|escape:'html'}</a>
{/foreach}
avatar
Спасибо, буду знать.
avatar
немного ошибся, вот так верно:
{assign var="aTopics" value=$LS->Topic_GetTopicsByBlogId(__BLOG_ID__, 1, 10, array ('blog'), false)}
{assign var="aTopics" value=$aTopics.collection}
{foreach from=$aTopics item=oTopic}
    <a href="{$oTopic->getUrl()}">{$oTopic->getTitle()|escape:'html'}</a>
{/foreach}
avatar
Спасибо! Только вот блок так и выводится пустым, и с классом, и без класса.
Не подскажете, в чем может быть проблема?
Блок подключал стандартно в конфиге:
$config['block']['ovcposts'] = array(
	'path' => array('___path.root.web___/blog/*/*\.html$'),
    'blocks' => array('right' => array('blocks/block.ovcposts.tpl'=> array('priority'=>100))),
	'clear' => false,
			);


в шаблоне вот так примерно:
<div class="block ovcposts troll">

<h1>ПОСЛЕДНИЕ ПУБЛИКАЦИИ</h1>
{assign var="aTopics" value=$LS->Topic_GetTopicsByBlogId('__BLOG_ID__', 1, 10, array ('blog'), false)}
{assign var="aTopics" value=$aTopics.collection}
{foreach from=$aTopics item=oTopic}
    <a href="{$oTopic->getUrl()}">{$oTopic->getTitle()|escape:'html'}</a>
{/foreach}	
</div>

h1 выводится нормально, дальше тишина
avatar
прочитайте код внимательно. для вас стараешься, а вы внимательно код просмотреть не можете.
avatar
если вы про __BLOG_ID__, то это я просто неправильно сюда вставил, в коде нормальный id, и все равно(
avatar
я специально вчера проверил, код робочий. что в коде страницы?
avatar
трижды пардон. все работает
виновата как всегда глупая ошибка с незакрытой фигурной скобкой
avatar
обновите заголовок вопроса и добавьте ответ в свой топик чтобы другие могли найти
avatar
А есть ли какая либо альтернатива такому выводу последнего топика? Потому что $LS->Topic_GetTopicsByBlogId, почему-то конфликтует с плагином Flow.
avatar
врядли оно должно конфликтовать. у меня флоу нету.
avatar
Выводит нормально и топики, которые жестко из блога и топики из Флоу. Просто у флоу после этого не работает ajax подгрузка топиков при прокрутке. Методом исключения нашел что не нравится именно строка $LS->Topic_GetTopicsByBlogId. Уже не знаю что и думать.
avatar
могу только предположить что нету в локальной копии вьюера $LS.
А есть ли какая либо альтернатива такому выводу последнего топика
писать тоже самое в плагине
avatar
Объявил переменные в хуке плагина — заработало)
avatar
напишите статью — другим будет интересно)
avatar
Глум или серьезно?))
avatar
второе. тут задают такие простые иногда вопросы, что даже маленькая заметка кому-нибудь да будет на пользу.
avatar
Подскажиет, как вывести список последних 5 топиков (без привязки к Id блога)?
avatar
Спасибо большое, помогло настроить вывод топиков))
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.