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


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

  1. Перейдя в бэкэнд Magento в раздел Система > Конфигурация > Дополнительно> Отключить вывод модулей, мы можем легко отключить определенные модули.
  2. В каталоге app/etc/modules, изменив активный тег с true на false.

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

Author: Fabian Schmengler, 2015-05-21

5 answers

  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 полностью отключенный модуль

 19
Author: Keyur Shah, 2015-12-25 04:58:09
  1. Перейдя в бэкэнд Magento в раздел Система > Конфигурация > Дополнительно> Отключить вывод модулей, мы можем легко отключить определенные модули.

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

    Если (Маг::getstoreconfig('расширенный/modules_disable_output/'. $это->getmodulename())){ возвращение"; }

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

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

Для каждого ($modules как $MODNAME=>$модуль) { если ($модуль->является ("активным")){ ------- } }

 4
Author: Sohel Rana, 2015-05-21 12:48:04

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

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

< ?xml version="1.0"?>
<config>
<modules>
<NAMESPACE_mymodule>
<active>false</active>
<codepool>local</codepool>
</NAMESPACE_mymodule>
</modules>
</config>
 3
Author: Qaisar Satti, 2015-06-29 14:47:24

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

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

 2
Author: Mayers, 2015-05-21 08:48:20

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

 0
Author: Elias, 2015-05-21 07:45:20