Вопрос по системе блоков

Доброго.

Уже замучался. Совсем не могу понять.

В общем мне надо вывести на главную в отдельный блог, 5 записей с определенного блога.

Создаю в classes/blocks файл BlockLast.class.php с содержимым:

<?php
     
    BlockLast extends Block
    {
        public function Exec()
        {
            $aTopics = $this->GetTopicsByBlogId(1);
            $oViewer = $this->Viewer_GetLocalViewer();
            $sTopicsList  = $oViewer->Fetch('block.last.tpl');
                  
            $this->Viewer_Assign('sTopicsList', $sTopicsList);
            }
        }
    }
?>


Создаю шаблон block.last.tpl с содержимым:

{if isset($aBlocks.$sGroup)}
        {foreach from=$aBlocks.$sGroup item=aBlock}
            {if $aBlock.type=='block'}
                {insert name="block" block=$aBlock.name params=$aBlock.params}
            {/if}
            {if $aBlock.type=='template'}
                 {include file=$aBlock.name params=$aBlock.params}
            {/if}
         {/foreach}
    {/if}


Вывожу так:

<div class="last">
        <div class="topics">
            {$sTopicsLast}
        </div>
    </div>


Ничего не выводится. Замучался уже, как только не пробовал, а все вникнуть не могу. Миллион раз прочитал статью
livestreet.ru/blog/dev_documentation/8443.html

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

avatar
block.last.tpl — вывод блоков в сайдбаре, а не вывод топиков куда либо.
Подсказка — topic_list.tpl
avatar
Ок. Спасибо за ответ.

Поменял содержимое шаблона block.last.tpl на:

{if count($aTopics)>0}
	{foreach from=$aTopics item=oTopic}
	   {assign var="sTopicTemplateName" value="topic_`$oTopic->getType()`.tpl"}
	   {include file=$sTopicTemplateName bTopicList=true}
	{/foreach}

    {include file='paging.tpl' aPaging="$aPaging"}
{else}
	<div class="padding">  {$aLang.blog_no_topic}</div>
{/if}


Сохранил, залил. Все равно ничего не выводится. Что делать? Объясните, пожалуйста.
avatar
За что минус? Тот кто минусует видимо шарит настолько во всем, что ему этот вопрос кажется идиотическим.
К каждому топику, чтобы ты не создавал будет минус. Я отвечаю. Тот кто минусует — мышь, которая ставит и убегает, без всякой помощи.

Даже представляю:
— О, новый топик. Зайду посмотрю, минус поставлю, если это конечно не админы.
avatar
Щас еще к комменту минусы понаставят :-D
avatar

            $aTopics = $this->GetTopicsByBlogId(1);
            $oViewer = $this->Viewer_GetLocalViewer();
            $sTopicsList  = $oViewer->Fetch('block.last.tpl');
                  
            $this->Viewer_Assign('sTopicsList', $sTopicsList);
            }


$aTopics не попадает в шаблон. она остается висеть только в модуле. естественно block.last.tpl ничего не выведет.

            $aTopics = $this->GetTopicsByBlogId(1);
            $oViewer = $this->Viewer_GetLocalViewer();
            $oViewer ->Assign('aTopics ', $aTopics );// вот тут надо переменную привязать
            $sTopicsList  = $oViewer->Fetch('block.last.tpl');
                  
            $this->Viewer_Assign('sTopicsList', $sTopicsList);
            }

avatar
Хм. Спасибо за ответ огромное.

Попробовал так сделать, но все равно ничего не выводится. Что-то не так идет…
avatar
такой конструкции нет

$aTopics = $this->GetTopicsByBlogId(1);

есть

$aTopics = $this->Topic_GetTopicsByBlogId(1, 1, 5);
avatar
1 — id блога
1 — страница № 1
5 записей на странице
avatar
Исправил. Не выводится…

В общем, вот что я делаю на данный момент:
Создаю в classes/blocks файл BlockLast.class.php с содержимым:

<?php
     
    BlockList extends Block
    {
        public function Exec()
        {
            $aTopics = $this->Topic_GetTopicsByBlogId(27, 1, 5);
            $oViewer = $this->Viewer_GetLocalViewer();
            $oViewer ->Assign('aTopics ', $aTopics );// вот тут надо переменную привязать
            $sTopicsList  = $oViewer->Fetch('block.last.tpl');
                  
            $this->Viewer_Assign('sTopicsList', $sTopicsList);
            }
            }
        }
    }
?>


Создаю шаблон block.last.tpl с содержимым:

{if isset($aBlocks.$sGroup)}
        {foreach from=$aBlocks.$sGroup item=aBlock}
            {if $aBlock.type=='block'}
                {insert name="block" block=$aBlock.name params=$aBlock.params}
            {/if}
            {if $aBlock.type=='template'}
                 {include file=$aBlock.name params=$aBlock.params}
            {/if}
         {/foreach}
    {/if}


Вывожу так:
<div class="last">
        <div class="topics">
            {$sTopicsLast}
        </div>
    </div>
avatar
livestreet.ru/blog/10094.html#comment155028
с этим блок нужен
avatar
Сорри. Да, именно этот код в шаблоне у меня. Ошибся.
Все равно не выводится… Обидно блин, столько вожусь с этой настройкой, все никак не получается.
avatar
вы ведь его в конфиге прописали?..
avatar
Упс. Вот щас прописал. Думаю как правильно прописать?

Сделал так:
Не работает с таким конфигом.

$config['block']['rule_topic'] = array(
                'path' => array(
                    '___path.root.web___/blog/*$',
                ),
                'action'  => array(
                    'index' => array('blog'),
                    'new'
                ),
                'blocks'  => array(
                    'central' =>  array(
                        'last'=>array('priority'=>100, 'params' => array())
                    )            
                ),
                'clear' => false,
        );
		
		   $config['block']['rule_user'] = array(
            'path' => array(
                '___path.root.web___/profile/*$',
                '___path.root.web___/settings/*$'
            ),
            'action' => array(),
            'blocks' => array(
                'upper' => array(
                'block.last.tpl'
                )        
            )
        );
avatar
Пробовал так:

$config['block']['rule_profile'] = array(
        'action'  => array( 'personal_blog' ),
        'blocks'  => array( 'right' => array('block.last.tpl') ),
);


Все равно не хочет.
avatar
для чего вообще этот кусок кода в шаблоне блока?
{if isset($aBlocks.$sGroup)}
        ....
    {/if}

и что значит
Вывожу так:
?
avatar
Такого нет :)
Вот это в шаблоне:

{if count($aTopics)>0}
        {foreach from=$aTopics item=oTopic}
           {assign var="sTopicTemplateName" value="topic_`$oTopic->getType()`.tpl"}
           {include file=$sTopicTemplateName bTopicList=true}
        {/foreach}

    {include file='paging.tpl' aPaging="$aPaging"}
{else}
        <div class="padding">  {$aLang.blog_no_topic}</div>
{/if}


Вывожу так?
Это значит вставляю этот код в шаблон.
avatar
итак, начните сначала:
1. в конфиг добавьте вывод блока, а в шаблон блока добавьте просто строку текстовую и настраивайте конфиг пока не увидите вывод этой строки, потом, когда будете знать что блок точно выводится, начинайте добавлять код.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.