Forcer l’installation de son module Magento après ceux par défaut

Parfois, on veut absolument que notre module soit installé après ceux définis par défaut dans Magento. On essaye bien souvent de jouer avec les dépendances entre modules mais cela n’a guère d’impact sur la priorisation des modules. Voici donc en quelques lignes comment laisser Magento s’installer tout seul comme un grand et que notre module s’installe après.

Surcharge de l’installeur par défaut

app/code/local/Namespace/MyModule/etc/config.xml :

<?xml version="1.0"?>
<config>
    <modules>
        <Namespace_MyModule>
            <version>0.1.0</version>
        </Namespace_MyModule>
    </modules>
    <global>
        <resources>
            <namespace_mymodule_setup>
                <setup>
                    <module>Namespace_MyModule</module>
                    <class>Namespace_MyModule_Model_Resource_Setup</class>
                </setup>
            </namespace_mymodule_setup>
        </resources>
    </global>
</config>

Installeur de notre module

app/code/local/Namespace/MyModule/Model/Resource/Setup.php :

<?php
 
class Namespace_MyModule_Model_Resource_Setup extends Mage_Core_Model_Resource_Setup
{
    public function applyUpdates()
    {
        if (!Mage::isInstalled()) {
            $modules = Mage::getConfig()->getNode('modules')->children();
            $myModule = substr(__CLASS__, 0, strpos(__CLASS__, '_Model'));
            foreach ($modules as $moduleName => $moduleNode) {
                if ($moduleName != $myModule) {
                    Mage::getConfig()->addAllowedModules($moduleName);
                }
            }
            Mage::getConfig()->reinit();
 
            return $this;
        }
 
        return parent::applyUpdates();
    }
}

Si vous installez Magento en ligne de commande (script install.php), il faut vider le cache pour que votre module soit installé. Avec l’installation depuis l’interface web, un clic sur « Go to backend » devrait suffire ».

1 réponse à “Forcer l’installation de son module Magento après ceux par défaut”

  1. Frank dit :

    Hi, you put me in the right direction

    thx

    But I have some optimizations for your code.
    You can find it here:
    http://www.magentocommerce.com/boards/v/viewthread/195760/

Laisser un commentaire

* Champs requis

Categories