Как управлять Блоками плагина в 0.4?

4
Задача: Есть плагин, в составе которого есть блок, который надо выборочно распихать по экшнам/экшнам+эвентам (наподобие блока баннера fastvps на главной+блогах)

Насколько я успел заметить, в конфиге есть правила для блоков, но подробно понять что там к чему разом не сумел. Функций в viewer'е не нашел для управления этими правилами, так же не нашел полезных комментариев в коде.

В итоге повесил хук на init_action, обращающийся к роутеру за сведениями об экшне+эвенте и этим хуком по собственным правилам вывожу необходимый блок.

+ понадобилось отключить в конфиге block.rule_index_blog.clear, иначе блок не выводился на главной (скорей всего это надо пофиксить в svn'е)

Вопрос: как мне наиболее православно всё это переписать, ибо я копчиком чувствую костыльность решения?
  • +1
  • 11 марта 2010, 01:42
  • 1d10t

Комментарии (10)

RSS свернуть / развернуть
Блок из плагина указывается как и обычные, только нужно передать в него параметр 'plugin' со значением имени плагина.

$this->Viewer_AddBlock('right','category',array('plugin'=>'filepanel'));

Добавить в правый сайдбар блок PluginFilepanel_BlockCategory.
Через конфигурацию делается точно также.
0
а как из хука плагина выставить правила для показа блока плагина в разных экшнах (даже вне плагина)?
через Config::Set('block.my_rule',… ) и только так?
0
только так?
А чем вас такое не устраивает?
0
было бы удобно иметь методы в viewer'е для изменения этих правил ну или хотя бы легкую доку по написанию этих правил в конфиге
0
Какая разница, как менять правила — через Config::Set() или через Engine::getInstance()->Viewer_*?
0
Зачем же конфиг для этого дергать? Вот так это делается:
if (Router::GetAction()=='...') {
  $this->Viewer_AddBlock('right','category');
}
0
да, я сделал так, не найдя более православных инструментов, но правила в конфиге выглядят более функционально и обрабатываются родным методом viewer'a BuildBlocks. зачем же тогда дублировать его работу?
0
… обрабатываются родным методом viewer'a BuildBlocks...
Ага, который в итоге добавляет блоки своим же родным методом AddBlock(), которым я и предложил воспользоваться.
0
Алексей, а зачем имя плагина передавать?
0
А как искать блок плагина, если не указано с какого он плагина?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.