jaka jest różnica między wyłączeniem wyjścia modułu a aktywnym modułem = prawda

16

W magento doszedłem do wniosku, że możemy wyłączyć nasz moduł na dwa sposoby

  1. Przechodząc do backendu Magento do System> Konfiguracja> Zaawansowane> Wyłącz wyjście modułów, możemy łatwo wyłączyć niektóre moduły.
  2. W katalogu app / etc / modules zmieniając tag aktywny z true na false.

Czy mogę wiedzieć, jaka jest dokładna różnica między tymi dwoma technikami? Jest to bardzo pomocne, jeśli ktoś udzieli bardziej szczegółowej odpowiedzi.

Charlie
źródło
1
Dobre pytanie ..
Amit Bera
@AmitBera, dziękuję
Charlie

Odpowiedzi:

17
  1. System > Configuration > Advanced > DisableWyjście modułów nie dezaktywuje tego modułu. Działa jak sugeruje nazwa, wyłącza wyjście modułów.

    Kiedy patrzysz na

    abstract class Mage_Core_Block_Abstract

    W

    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. Podczas gdy app/etc/modulescałkowicie wyłączony moduł

Keyur Shah
źródło
Idealna odpowiedź ...
Kartik Asodariya
3
  1. Przechodząc do backendu Magento do System> Konfiguracja> Zaawansowane> Wyłącz wyjście modułów, możemy łatwo wyłączyć niektóre moduły.

    - Oznacza to, że moduł nie będzie renderował, nie wysyła danych wyjściowych na ekran, ale wykonuje moduł. Zobacz aplikację / code / core / Mage / Core / Block / Abstract.php -> toHtml

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

  2. W katalogu app / etc / modules zmieniając tag aktywny z true na false.

    ---- true / false zdefiniuj, że moduł będzie ładowany lub pomijany. Spójrz app/code/core/Mage/Core/Model/Config.php->loadModulesConfiguration

foreach ($ moduły jako $ modName => $ moduł) {if ($ module-> is ('active')) {-------}}

Sohel Rana
źródło
2

Po prostu Disable Modules Outputoznacza to, że moduł nie wyświetli niczego na ekranie, pod względem programowania: _toHtml()funkcja nic nie zwróci. Cała reszta (obserwatorzy, przepisywanie, kontrolery) będzie nadal wykonywana.

Idealnie, jeśli chcesz poprawnie wyłączyć moduł, ustaw „Aktywny” na falsei upewnij się, że żaden inny moduł go nie rozszerza.

Mayers
źródło
2

Configuration > Current Configuration Scope > Advanced > Advanced > Disable Module Output.Ta akcja wyłącza wyjście modułu tylko tak, jak mówi. Jeśli twój moduł używa, powiedzmy, że funkcjonalność Observera łączy się z pewną częścią systemu i wykonuje pewne przesłonięcia, wtedy te akcje nie zostaną wyłączone.

Aby całkowicie wyłączyć moduł, musisz przejść do pliku konfiguracyjnego modułu, jak /etc/NAMESPACE_MyModule.xmli ustawić jego parametr aktywny na false, na przykład:

< ?xml version="1.0"?>
<config>
<modules>
<NAMESPACE_mymodule>
<active>false</active>
<codepool>local</codepool>
</NAMESPACE_mymodule>
</modules>
</config>
Qaisar Satti
źródło
Jeśli zmienimy aktywny tag na false, to czy ładuje moduł? Jak Magento sobie z tym poradzić?
Charlie
nadal ładuje moduł, który pokaże w systemie> konfiguracja> zaawansowane. nie ładuj pliku modułu, takiego jak etc / config.xml.
Qaisar Satti
0

„Wyłącz wyjście modułów” wyłącza tylko wyjście bloku zdefiniowane przez rozszerzenie. Nie pomija wykonywania modułu jego kodu, jeśli na przykład ma zdefiniowanych obserwatorów.

Elias
źródło
Który plik zostanie załadowany, a które nie w obu przypadkach?
Charlie