Как управлять Блоками плагина в 0.4?
4
Задача: Есть плагин, в составе которого есть блок, который надо выборочно распихать по экшнам/экшнам+эвентам (наподобие блока баннера fastvps на главной+блогах)
Насколько я успел заметить, в конфиге есть правила для блоков, но подробно понять что там к чему разом не сумел. Функций в viewer'е не нашел для управления этими правилами, так же не нашел полезных комментариев в коде.
В итоге повесил хук на init_action, обращающийся к роутеру за сведениями об экшне+эвенте и этим хуком по собственным правилам вывожу необходимый блок.
+ понадобилось отключить в конфиге block.rule_index_blog.clear, иначе блок не выводился на главной (скорей всего это надо пофиксить в svn'е)
Вопрос: как мне наиболее православно всё это переписать, ибо я копчиком чувствую костыльность решения?
Насколько я успел заметить, в конфиге есть правила для блоков, но подробно понять что там к чему разом не сумел. Функций в viewer'е не нашел для управления этими правилами, так же не нашел полезных комментариев в коде.
В итоге повесил хук на init_action, обращающийся к роутеру за сведениями об экшне+эвенте и этим хуком по собственным правилам вывожу необходимый блок.
+ понадобилось отключить в конфиге block.rule_index_blog.clear, иначе блок не выводился на главной (скорей всего это надо пофиксить в svn'е)
Вопрос: как мне наиболее православно всё это переписать, ибо я копчиком чувствую костыльность решения?
- +1
- 11 марта 2010, 01:42
- 1d10t
Блок из плагина указывается как и обычные, только нужно передать в него параметр 'plugin' со значением имени плагина.
Добавить в правый сайдбар блок PluginFilepanel_BlockCategory.
Через конфигурацию делается точно также.
$this->Viewer_AddBlock('right','category',array('plugin'=>'filepanel'));Добавить в правый сайдбар блок PluginFilepanel_BlockCategory.
Через конфигурацию делается точно также.
а как из хука плагина выставить правила для показа блока плагина в разных экшнах (даже вне плагина)?
через Config::Set('block.my_rule',… ) и только так?
через Config::Set('block.my_rule',… ) и только так?
Зачем же конфиг для этого дергать? Вот так это делается:
if (Router::GetAction()=='...') {
$this->Viewer_AddBlock('right','category');
}
Комментарии (10)
RSS свернуть / развернуть