Как мне вывести блок в сайтбар.

Здравствуйте.
Хочу написать плагин который будет выводить в сайтбар блок с определенным содержимым. Как мне это сделать? Возможно ли при помощи хука вывести блок в сайтбар?
Сейчас делаю так
class PluginFloat_HookFloat extends Hook
{

    public function RegisterHook()
    {
            $this->AddHook('template_sidebarfloat', 'float_view');
    }

    public function float_view()
    {
        return $this->Viewer_Fetch(Plugin::GetTemplatePath(__CLASS__) . 'block.float.tpl');
    }

}

в файлах шаблона, где нужен этот блок пишу
{hook run='template_sidebarfloat'}

ничего не происходит.
Как такое правильно сделать?

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

avatar
Я вот так в одном своём плагине вывел. Блок выводится на страницах index и блок. Путь: /plugins/aphorismos/classes/hooks. Код:
<?php
class PluginAphorismos_HookAphorismos extends Hook {
    public function RegisterHook() {
        if ((Router::GetAction() == "blog") || (Router::GetAction() == "index")) {
            $this->Viewer_AddBlocks('right', array(
                array(
                    'block'    => 'Aphorismos',
                    'params'   => array('plugin' => 'aphorismos'),
                    'priority' => 100,
                )
            ));
        }
    }
}

Это наверное не совсем правильно, т.к. вывод блока обычно в конфиге настраивают, но может пример поможет?
  • vdenu
  • -1
avatar
А где в таком случае хранить шаблон блока?
avatar
/plugins/aphorismos/templates/skin/default/blocks/block.Aphorismos.tpl
avatar
Добавление блока осуществляется в конфиге, а вы просто совершаете извращения :)
https://github.com/livestreet/livestreet/blob/master/application/config/config.php#L327-L338
avatar
Насколько я понял у автора речь идёт о плагине. А так да, в конфиг прописывает блок я выше написал:
т.к. вывод блока обычно в конфиге настраивают
avatar
Ой даже минус поставили.

Если бы еще умели разбираться в коде так же как минусы ставить.
github.com/livestreet/lstemplate-wordpress/blob/master/plugin/wordpress/config/config.php#L59-L81

Ссылка на конфиг была что бы показатель наличие параметров, которые вы нелогично проверяете в хуке. Все делается более KISS'овее.
avatar
Извиняюсь у автора топика…
Ой даже минус поставили.
Ага, тем же самым по тому же самому — это во-первых, а во-вторых демонстрировать знания и оказывать помощь стоит без высокомерных поз и поучающих лекций. Впрочем, вам и видимо вашим клонам (не уверен) это не очень понятно. Всего доброго, «гуру».
avatar
Я не вижу в сообщениях ничего грубого и реакция на необоснованный минус мне кажется достаточно мягкой, не знаю чего вы взъелись.

У меня нет ни одного клона, говорю вам честно
avatar
реакция на необоснованный минус
на это и взъелся. Но раз так трепетно, то получите назад… Чего не скажешь в шутейском разговоре.
avatar
Удивительно да? Оказывается конфиги везде одинаковые.
avatar
Не выводиться потому что нужно писать в tpl'ке так:
{hook run='sidebarfloat'}

template_ это указание на то что мы вешаем коллбэк на хук находящийся в шаблоне.
avatar
так тоже пробовал, ничего.
avatar
Только этот вариант с хуками рабочий.

И насчет вывода именно блока как надо поищите на сайте раз не можете справиться сами, все делается через конфиг, а не таким костыльным способом когда речь идет о сайдбаре.
avatar
создал в плагине файл когфига и туда прописал вот это
Config::Set('block.floatblock', array(
    'path' => '.+',
    'action'  => array(
        'index', 'blog' => array('{topics}','{topic}','{blog}')
    ),
    'blocks'  => array(
        'right' => array(
            'floatblock'=>array('priority'=>83,'params'=>array('plugin'=>'floatblock')),
        )
    ),
    'clear' => true,
));


return $config;

Бок выводится. Но есть проблема, на страницах где выводится этот блок пропали все остальные блоки.
avatar
с проблемой разобрался, нужно всего лишь изменить 'clear' => true на 'clear' => falce
avatar
qwe
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.