Переопределение конфигурации плагина
Всем привет.
Возник вопрос касательно плагинов и их конфигурации.
Создал плагин. В конфигурации указал
Вывод двух блоков в одном месте.
Но мне нужно выводить эти блоки по очереди. Один раз обновили страницу — один блок. Второй раз обновили другой блок или опять первый.
Я так понял, что в хуке мне необходимо переопределить конфигурацию.
И вот тут я попал в тупик.
Во-первых я не представляю, как обратиться к конфигурации плагина.
Погуглив и прошерстив все блоки я пришёл к выводу, что есть два варианта —
и
Это первый вопрос.
Следующий вопрос — когда я получу конфигурацию файла — могу ли я сделать вот такую проверку, которая у меня сейчас
И исключить эту настройку из конфигурации?
Заранее спасибо за помощь.
Возник вопрос касательно плагинов и их конфигурации.
Создал плагин. В конфигурации указал
Config::Set('block.rule_subscription', array( 'action' => array( 'newspaper', 'index', 'topics' ), 'blocks' => array( 'bottom' => array( 'subscriptionView' => array('params'=>array('plugin'=>'subscription'),'priority'=>700), ), ), 'clear' => false, )); Config::Set('block.rule_subscription_social', array( 'action' => array( 'newspaper', 'index', 'topics' ), 'blocks' => array( 'bottom' => array( 'subscriptionViewSocial' => array('params'=>array('plugin'=>'subscription'),'priority'=>700), ), ), 'clear' => false, ));
Вывод двух блоков в одном месте.
Но мне нужно выводить эти блоки по очереди. Один раз обновили страницу — один блок. Второй раз обновили другой блок или опять первый.
Я так понял, что в хуке мне необходимо переопределить конфигурацию.
$this->AddHook('template_body_end', 'Subscription'); $config = Config::Get('block.rule_subscription'); foreach($config as $sName=>&$aRule){ if(isset($aRule['blocks']['bottom'])){ unset($aRule['blocks']['bottom']); } } Config::Set('block.rule_subscription', $config);
И вот тут я попал в тупик.
Во-первых я не представляю, как обратиться к конфигурации плагина.
Погуглив и прошерстив все блоки я пришёл к выводу, что есть два варианта —
$config = Config::Get('block.rule_subscription');
и
$config = Config::Get('plugin.subscription');
Это первый вопрос.
Следующий вопрос — когда я получу конфигурацию файла — могу ли я сделать вот такую проверку, которая у меня сейчас
if(isset($aRule['blocks']['bottom'])){ unset($aRule['blocks']['bottom']); }
И исключить эту настройку из конфигурации?
Заранее спасибо за помощь.
7 комментариев
Можете в сессии хранить номер текущего блока и переключать содержимое в зависимости от этого в самом блока.
Будет менять блоки в случайном порядке.
логичнее и красивее
меньше рекурсивных вызовов и конфиги выглядят больше конфигами, а не частью кода (хоть таковой и являются), конечно бывают ситуации когда без кода в конфигах некуда, но лучше этим не баловаться.