Бесплатный плагин aceWidgetManager - наглядные примеры использования

В предыдущей статье я подробно расписал, какие опции используются для подключения и конфигурирования виджетов с помощью плагина aceWidgetManager. А теперь приведу конкретные примеры, как все это богатство можно использовать.

Вот самый простой пример задания виджета:
$config['widgets'][] = array(
    'name' => 'blocks/block.something.tpl', // название шаблона виджета
    'group' => 'right', // позиционирование
);

Здесь в группу виджетов 'right' добавляется шаблонный виджет blocks/block.something.tpl. Т.е. в папке /templates/skin/<текущий_скин>/blocks/ будет взят шаблон block.something.tpl и вставлен туда, где в шаблоне объявлено (обычно это в правом сайдбаре):
{include file='blocks.tpl' group='right'}

Этот виджет будет выводиться на всех страницах и в любое время, без каких-либо специальных условий.

А теперь давайте усложним задачу и зададим вывод стандартного виджета, в котором выводится информация о блоге для которого создается/редактируется топик:
$config['clear'] = true; // 
$config['widgets'][] = array(
    'name' => 'blocks/block.blogInfo.tpl', // имя файла виджета-шаблона
    'group' => 'right', // позиционирование виджета
    'priority' => 'top', // приоритет top – выводить выше всех
    'on' => array(
        'topic/add', 'topic/edit',
        'link/add', 'link/edit',
        'question/add', 'question/edit',
        'photoset/add', 'photoset/edit',
    ),
);

Как видите, опций тут задано уже гораздо больше, в т.ч. и пути (страницы) задаются, на которых этот виджет должен отображаться. Кстати, обратите внимание: для простоты настроек начиная с версии 2.0.212 путь 'topic/edit' эквивалентен пути 'topic/edit/*'.

А что если нужно подключить виджет, который определен в каком-то плагине? Например, есть виджет Companies в плагине Company и его можно подключить так:
$config['widgets'][] = array(
    'name' => 'companies', // название виджета
    'group' => 'right', // позиционирование 
    'params' => array(
        'plugin' => 'company', // название плагина
    ),
);
В этом примере задается исполняемый виджет BlockCompanies.class.php. Кстати, предусмотрена проверка — активен ли плагин, виджет которого подключается, или нет. Если в админке отключить плагин Company, то этот виджет будет просто игнорироваться при выводе. Включили плагин Company — виджет будет отображаться.

Иногда возникает необходимость вставить в сайдбар какой-то HTML-код. Это может быть блок с счетчиками, или банерокрутилка, или что-то еще – в общем, произвольный HTML-код (в том числе и javascript). Без плагина aceWidgetManager вам пришлось бы писать для этого специальный виджет или же влезать в код шаблона. Но с плагином задача упрощается в разы и решается так:
$config['widgets'][] = array(
    'name' => 'template', // название пустого виджета
    'group' => 'right', // позиционирование
    'params' => array(
        'plugin' => 'acewidgetmanager', //
        'title' => 'Это заголовок',
        'file' => 'demo-file.txt', 
    ),
);

А в папку /plugins/acewidgetmanager/config/widgets/ кладется файл demo-file.txt, в который вы пишете тот HTML-код, что нужно выводить на страницу. И все!

Надо вам там два виджета с разным содержимым? Так в чем проблема! Добавляете два таких виджета и в каждом задаете свой файл с кодом.

Нужно вам вывести в виджете какое-то изображение, баннер, флеш? Нет проблем — пишите код в файл и выводите его.

Кроме того, можно этот код (если он небольшой по объему) прямо в описание виджета добавить:
$config['widgets'][] = array(
    'name' => 'template', // название пустого виджета
    'group' => 'right', // позиционирование
    'params' => array(
        'plugin' => 'acewidgetmanager', //
        'title' => 'Это заголовок',
        'text' => '<a href="http://ya.ru"><img src="/uploads/banner/yandex.png"></a>', 
    ),
);

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

Часть 1: livestreet.ru/blog/addons/13391.html
Часть 2: этот топик
Часть 3: livestreet.ru/blog/13401.html

При ремонте загородного дома особого внимание требует выбор стойкой краски для пола. Широкий ее ассортимент представлен в строительных магазинах.

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

avatar
Чувак, ты супер!
avatar
Спасибо за информацию!
avatar
сделал так
$config['clear'] = true; // 
$config['widgets'][] = array(
    'name' => 'blocks/block.stream.tpl', // имя файла виджета-шаблона
    'group' => 'right', // позиционирование виджета
    'priority' => 'top', // приоритет top – выводить выше всех
    'on' => array(
        'events', 'blogs',
        'forum',
    ),
);

На главной странице (которая Events), показывается шапка блока, комменты — нет. Если поклазать свитчер (комменты — топики), то начинает показываеться. При перезагрузке — опять не показывается
avatar
блок стрим — это блок с обработчиком, поэтому подключать нужно как имя блока — «stream», а не как название шаблона. Обо всем здесь livestreet.ru/blog/dev_documentation/13379.html
avatar
спасибо, теперь все хорошо работает.
avatar
Покажите пример. У меня не получается.
avatar
Разобрался
avatar
правда блок эфира на странице /blog/ выводится два раза
avatar
Здравствуйте, подскажите пожалуйста, почему в LiveStreet 1.0.1 на главной в блоке справа «Прямой эфир», «Топ блогов» отображаются нормально, а вот на внутренних страницах почему-то раздваиваются (появляются по два раза)!

вот посмотрите: rosbenz.ru/
на главной все нормально, на внутренних беда((
уже и другие шаблоны пробовал

За ранее благодарен за ответ!!!
avatar
Надо конфиги смотреть, чтоб точно сказать. Наиболее вероятная причина: эти виджеты прописаны не только в конфиге плагина, но в конфиге сайта, вот и отображаются дважды.
avatar
А php код он обрабатывает? Рекламу с бирж продажи ссылок запилить можно?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.