qual é a diferença entre desativar a saída do módulo e o módulo ativo = true

16

No magento, soube que podemos desagregar nosso módulo de duas maneiras

  1. Navegando no back-end do Magento para Sistema> Configuração> Avançado> Desativar saída dos módulos, podemos facilmente desativar determinados módulos.
  2. No diretório app / etc / modules, alterando a tag ativa de true para false.

Posso saber qual é a diferença exata nessas duas técnicas? É muito útil se alguém der uma resposta mais detalhada.

Charlie
fonte
1
Boa pergunta ..
Amit Bera
@AmitBera, Obrigado
Charlie

Respostas:

17
  1. System > Configuration > Advanced > DisableA saída de módulos não desabilitará esse módulo. Funciona como o nome sugere, desative a saída dos módulos.

    Quando você olha para

    abstract class Mage_Core_Block_Abstract

    Dentro

    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. Enquanto app/etc/modulesmódulo completamente desativado

Keyur Shah
fonte
Resposta perfeita ...
Kartik Asodariya
3
  1. Navegando no back-end do Magento para Sistema> Configuração> Avançado> Desativar saída dos módulos, podemos facilmente desativar determinados módulos.

    - Isso significa que o módulo não será renderizado, não enviará saída para a tela, mas seu módulo será executado. Dê uma olhada em app / code / core / Mage / Core / Block / Abstract.php -> toHtml

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

  2. No diretório app / etc / modules , alterando a tag ativa de true para false.

    ---- true / false define seu módulo será carregar ou pular. Dê uma olhada app/code/core/Mage/Core/Model/Config.php->loadModulesConfiguration

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

Sohel Rana
fonte
2

Quando você apenas Disable Modules Outputsignifica que o módulo não renderiza nada na tela, em termos de programação: a _toHtml()função não retornará nada. Todo o resto (observadores, reescritos, controladores) ainda será executado.

Idealmente, se você deseja desabilitar um módulo corretamente, defina "Ativo" para false, e verifique se nenhum outro módulo o está estendendo.

Mayers
fonte
2

Configuration > Current Configuration Scope > Advanced > Advanced > Disable Module Output.Esta ação desativa apenas a saída do módulo, conforme indicado. Se o seu módulo usar, digamos que algumas funcionalidades do Observer sejam conectadas a alguma parte do sistema e substituam essas ações, essas ações não serão desativadas.

Para desativar completamente o módulo, você precisa ir para o arquivo de configuração do módulo, como /etc/NAMESPACE_MyModule.xml , e definir seu parâmetro ativo como false, como:

< ?xml version="1.0"?>
<config>
<modules>
<NAMESPACE_mymodule>
<active>false</active>
<codepool>local</codepool>
</NAMESPACE_mymodule>
</modules>
</config>
Qaisar Satti
fonte
Se mudarmos o tag ativo para false, ele carrega o módulo? Como o Magento lida com isso?
Charlie
ele ainda carrega o módulo que será exibido em sistema> configuração> avançado. Não carregue o arquivo do módulo como o etc / config.xml.
Qaisar Satti 21/05
0

"Desativar saída de módulos" apenas desativa a saída do bloco definida pela extensão. Não pula a execução do módulo, seu código se, por exemplo, tiver observadores definidos.

Elias
fonte
Qual arquivo será carregado e quais arquivos não estão no caso?
Charlie