в чем разница между отключением вывода модуля и активным модулем = true

16

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

  1. Перейдя в бэкэнд Magento к System> Configuration> Advanced> Disable modules output, мы можем легко отключить некоторые модули.
  2. В каталоге app / etc / modules, изменив активный тег с true на false.

Могу ли я узнать, в чем точная разница в этих двух техниках? Очень поможет, если кто-нибудь даст более подробный ответ.

Чарли
источник
1
Хороший вопрос ..
Амит Бера
@AmitBera, спасибо
Чарли

Ответы:

17
  1. System > Configuration > Advanced > DisableВыход модулей не будет фактически отключать этот модуль. Это работает, как следует из названия, отключить вывод модулей.

    Когда вы смотрите на

    abstract class Mage_Core_Block_Abstract

    В

    final public function toHtml()
    {
        Mage::dispatchEvent('core_block_abstract_to_html_before', array('block' => $this));
        if (Mage::getStoreConfig('advanced/modules_disable_output/' . $this->getModuleName())) {
            return '';
        } 
    
    // It is checking If its in disabled mode then just return blank output
    .......
    }
  2. Пока app/etc/modulesполностью отключен модуль

Кейур Шах
источник
Идеальный ответ ...
Картик Асодария
3
  1. Перейдя в бэкэнд Magento к System> Configuration> Advanced> Disable modules output, мы можем легко отключить некоторые модули.

    - Это означает, что модуль не будет отображать, не отправляет вывод на экран, но ваш модуль выполняется. Взгляните приложение / код / ​​ядро ​​/ маг / ядро ​​/ блок / Abstract.php -> toHtml

    if (Mage :: getStoreConfig ('advanced / modules_disable_output /'. $ this-> getModuleName ())) {return ''; }

  2. В каталоге app / etc / modules , изменив активный тег с true на false.

    ---- true / false определить ваш модуль будет загружен или пропустить. Посмотрите app/code/core/Mage/Core/Model/Config.php->loadModulesConfiguration

foreach ($ modules as $ modName => $ module) {if ($ module-> is ('active')) {-------}}

Сохель Рана
источник
2

Когда вы просто Disable Modules Output, это означает, что модуль не будет ничего отображать на экране, в терминах программирования: _toHtml()функция ничего не вернет. Все остальное (наблюдатели, переписывает, контролеры) все равно будет выполнено.

В идеале, если вы хотите правильно отключить модуль, установите для него значение «Активно» falseи убедитесь, что никакой другой модуль его не расширяет.

Майерсом
источник
2

Configuration > Current Configuration Scope > Advanced > Advanced > Disable Module Output.Это действие отключает только вывод модуля, как сказано. Если ваш модуль использует, скажем, некоторые функции Observer для подключения к какой-либо части системы и выполняет некоторые переопределения, то эти действия не будут отключены.

Чтобы полностью отключить модуль, вам нужно перейти в файл конфигурации модуля, например /etc/NAMESPACE_MyModule.xml, и установить для его активного параметра значение false, например:

< ?xml version="1.0"?>
<config>
<modules>
<NAMESPACE_mymodule>
<active>false</active>
<codepool>local</codepool>
</NAMESPACE_mymodule>
</modules>
</config>
Кайсар Сатти
источник
Если мы изменим активный тег на false, он загружает модуль? Как Magento справляется с этим?
Чарли
он все еще загружает модуль, который будет показан в системе> конфигурация> расширенный. Не загружать файл модуля, например, etc / config.xml.
Кайсар Сатти
0

«Отключить вывод модулей» отключает только вывод блока, определенный расширением. Он не пропускает выполнение модуля своим кодом, если, например, для него определены наблюдатели.

Элиас
источник
Какой файл загрузится, а какие нет в обоих случаях?
Чарли