Mi objetivo es desactivar el módulo mediante programación (por ejemplo, durante algún evento de observador). El primer observador que encontré es controller_front_init_before.Magento, ¿cómo deshabilitar el módulo mediante programación?
Así que mi módulo está escuchando a ella, y luego hacer lo siguiente:
Mage::getConfig()->getModuleConfig('IG_LightBox')->active=(string)'false';
Pero el módulo seleccionado todavía está activo en cada página.
También probé este enfoque (lo mismo pero de forma diferente):
Mage::getConfig()->getNode('modules/IG_LightBox')->active=(string)'false';
También probé impresora para reiniciar config después de todo y de loadModules una vez más, pero ambos no ayudará.
Mage::getConfig()->loadModules(); // won't help
Mage::getConfig()->reinit(); // won't help
¿Es posible desactivar el módulo mediante programación?
Actualización 1. Esta solución funciona perfectamente para el back-end. active = false realmente deshabilita el módulo, pero también lo necesito para el front-end. Así que mantengo mi búsqueda.
Update 2 Hay 2 métodos en el app/Mage.php, llamados init y initSpecified, lo que permite ejecutar el Magento con el número seleccionado de sólo módulos. Pero esos métodos no se llaman en el flujo predeterminado.
Actualización 3 hay un evento observador podemos utilizar para activar o desactivar los módulos de pago sobre la marcha. Se llama payment_method_is_active. Este ejemplo de código hace que el método de pago con cheque Giro siendo no está activo:
public function payment_method_is_active(Varien_Event_Observer $observer)
{
if($observer->getMethodInstance()->getCode()=='checkmo')
{
$observer->getResult()->isAvailable=false;
}
}
no veo un lugar donde realice "guardar" en este ya que este valor está almacenado en el archivo del módulo no en la base de datos tiene que cambiar el valor en el archivo de configuración y luego guardar esto o de lo contrario se restablecerá todo el tiempo –