Domanda

Dopo una settimana di pieno il duro lavoro e la codifica ho sviluppato con successo un'estensione di Magento che sta funzionando come previsto, ma quando ho disattivare il modulo da Magento amministrazione config ancora ignorando la funzionalità, ho letto sull'impostazione falso nel modulo di configurazione globale file, ma non sempre come posso fare questo programatically.

Uno hanno alcuna idea di come questo possa essere risolvere?

Grazie

È stato utile?

Soluzione

Dalla sezione di amministrazione con tutti i moduli non è possibile disabilitare un modulo. Da lì si può disabilitare l'uscita di qualche modulo solo. Ciò significa che il codice è ancora eseguito, ma nessun output viene generato.
In effetti, il modo per disattivare un modulo è quello di cambiare il <active> tag false nel xml dichiarazione del modulo (app/etc/modules/Namespace_Module.xml) e cancellare la cache.
Non credo che è possibile disabilitare un modulo dal codice in quanto i moduli vengono caricati molto presto l'applicazione (Mage_Core_Model_Config::_loadDeclaredModules()).
Quando si costruisce moduli personalizzati mi piace anche essere in grado di disattivare loro con 'un clic'. Ecco come faccio di solito è:
-. Aggiuntivo in uno system.xml 'abilitato' campo

<enabled translate="label" module="news">
    <label>Module is enabled</label>
    <frontend_type>select</frontend_type>
    <source_model>adminhtml/system_config_source_yesno</source_model>
    <sort_order>1</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
</enabled> 

- creare un metodo nel helper per controllare questo flag

public function getIsEnabled(){
    return Mage::getStoreConfigFlag('section/group/enabled'); //replace section & group with appropriate values.
}

Ora, in ogni pezzo di codice che è prevalente qualcosa nel nucleo o si suppone di uscita qualcosa, io uso questo metodo di supporto.
Diciamo che stai facendo override un metodo chiamato getSomething() in una classe. Questo è come il tuo metodo dovrebbe essere simile:

function getSomething($params){
    if (!Mage::helper('module_name')->getIsEnabled()){ //if my module is not enabled
        return parent::getSomething($params);
    }
    //your logic here.
}

Ogni .phtml nel vostro modulo dovrebbe essere simile a questo:

<?php if (Mage::helper('module_name')->getIsEnabled()) : //if my module is enabled?>
    <div>Block output here</div>
<?php endif; ?>

Se tutto il modello e metodi sovrascritti assomigliano a questo, si dovrebbe essere in grado di disabilitare (simulare disabilita) dal pannello di configurazione.

Altri suggerimenti

Marius ha perfettamente ragione, tranne una cosa.

Anche la disattivazione del modulo impostando active su false nel file di bootstrap non è sufficiente nel caso in cui qualche altro modulo sta estendendo sua categoria o usando il suo modello.

Quindi, per essere sicuri al 100% l'estensione viene disattivato si hanno anche per rimuoverlo è tutti i file o le directory almeno rinominare / file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top