Как отключить пользовательские макеты в magento на основе пользовательского состояния модуля - PullRequest
1 голос
/ 08 февраля 2011

Я создал файл с именем «myblock.phtml» в frontend\default\default\layout\mytemplate. Он просто отображает кнопку «check», которая в свою очередь вызывает URL-адрес контроллера пользовательского модуля. Вопрос в том, хочу ли я перестать отображать эту кнопку (т.е.; шаблон myblock.html) всякий раз, когда этот пользовательский модуль отключен, поскольку без включения модуля это не имеет смысла. Любой способ настройки в файле config.xml ??

модуля

Ответы [ 3 ]

0 голосов
/ 08 февраля 2011

Чтобы расширить ответ Антона, создайте собственный класс блоков, который выполняет что-то вроде этого:

class Mypackage_Myextension_Block_Checkbox extends Mage_Core_Block_Template {

    protected function _toHtml() {
        if(!$this->checkIfModuleIsEnabled()) {
            return "";
        }
        return parent::_toHtml();
    }
}

Надеюсь, это поможет!

Спасибо, Джо

0 голосов
/ 08 февраля 2011

// Это код в блоке моего модуля "Checkbox.php". Просто может быть полезным для других.

<?php
class Mypackage_Myextension_Block_Checkbox extends Mage_Core_Block_Template {

    //echos a text based on module state
    protected function checkstate() {

        $modules = Mage::getConfig()->getNode('modules')->children();
        $modulesArray = (array)$modules;

                             //my module name
        if($modulesArray['Mypackage_Myextension']->is('active')) {
            echo "Mypackage_Myextension is active.";
        } 
        else {
            echo "Mypackage_Myextension is not active.";
        }
    }
}

?>

Таким образом, когда я отключаю модуль (System-> Advanced->Отключить модуль), содержимое блока не отображается.

0 голосов
/ 08 февраля 2011

Все шаблоны должны проходить через блок, а в блоке вы можете сделать дополнительные проверки или позволить функции magento по умолчанию отключить вывод блока, когда ваше расширение отключено на странице администрирования

...