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


16

У Магенто я дізнався, що ми можемо відключити наш модуль двома способами

  1. Перемістившись у Magento Bakend до системи> Конфігурація> Додатково> Вимкнути вихід модулів, ми можемо легко відключити певні модулі.
  2. У додатку каталогу / etc / модулі, змінивши тег active з 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 Bakend до системи> Конфігурація> Додатково> Вимкнути вихід модулів, ми можемо легко відключити певні модулі.

    - Це означає, що модуль не відображає, не надсилає вихід на екран, але ваш модуль виконує. Подивіться додаток / код / ​​core / Mage / Core / Block / Abstract.php -> toHtml

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

  2. У додатку каталогу / etc / модулі , змінивши тег active з true на false.

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

foreach ($ модулі як $ 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, це модуль завантаження? Як Магенто впорається з цим?
Чарлі

він все ще завантажує модуль, який буде показаний у системі> конфігурація> розширений. не завантажувати файл модуля, як etc / config.xml.
Qaisar Satti

0

"Вимкнути вихід модулів" вимикає тільки блок-вихід, визначений розширенням. Він не пропускає виконання модуля свого коду, якщо, наприклад, у нього визначені спостерігачі.


Який файл буде завантажено, а які файли не в обох випадках?
Чарлі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.