в чем разница между отключением вывода модуля и модулем active = true
В magento я пришел к выводу, что мы можем отключить наш модуль двумя способами
- Перейдя в бэкэнд Magento в раздел Система > Конфигурация > Дополнительно> Отключить вывод модулей, мы можем легко отключить определенные модули.
- В каталоге app/etc/modules, изменив активный тег с true на false.
Могу ли я узнать, в чем заключается точная разница в этих двух методах? Это очень поможет, если кто-нибудь даст более подробный ответ.
5 answers
-
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 ....... }
В то время как
app/etc/modules
полностью отключенный модуль
-
Перейдя в бэкэнд Magento в раздел Система > Конфигурация > Дополнительно> Отключить вывод модулей, мы можем легко отключить определенные модули.
-- Это означает, что модуль не будет отображаться, не будет отправлять вывод на экран, но ваш модуль будет выполняться. Взгляните app/code/core/Mage/Core/Block/Abstract.php -> toHtml
Если (Маг::getstoreconfig('расширенный/modules_disable_output/'. $это->getmodulename())){ возвращение"; }
-
В каталоге app/etc/modules, изменив активный тег с true на false.
---- истина/ложь определите, будет ли ваш модуль загружен или пропущен. Взгляните
app/code/core/Mage/Core/Model/Config.php
->loadModulesConfiguration
Для каждого ($modules как $MODNAME=>$модуль) { если ($модуль->является ("активным")){ ------- } }
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>
Когда вы просто Disable Modules Output
, это означает, что модуль ничего не отобразит на экране, в терминах программирования: функция _toHtml()
ничего не вернет. Все остальное (наблюдатели, перезаписи, контроллеры) все равно будет выполнено.
В идеале, если вы хотите правильно отключить модуль, установите "Активный" на false
и убедитесь, что никакой другой модуль не расширяет его.
"Отключить вывод модулей" отключает только вывод блока, определенный расширением. Он не пропускает выполнение кода модуля, если, например, в нем определены наблюдатели.