RomsWebDesign Posted January 24, 2014 Share Posted January 24, 2014 (edited) Bonjour, J'ai développé un module qui override principalement le controller CategoryController. Je voudrais que l'override s'installe que si le module est activé. Si on désactive le module alors on désinstalle l'override. Comment puis-je faire cela ? Merci Edited January 24, 2014 by RomsWebDesign (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted January 24, 2014 Share Posted January 24, 2014 si tu installes un module, les overrides du module sont installés automatiquement (sur 1.5 en tout cas) Link to comment Share on other sites More sharing options...
RomsWebDesign Posted January 24, 2014 Author Share Posted January 24, 2014 Exact. Ce que je souhaites c'est lorsque je désactive le module, les overrides se désinstallent également. La raison est la suivante : => Par exemple dans le categorycontroller, j'assigne un template différent suivant que l'on soit sur une page avec ou sans enfant. Le problème c'est que si le module est inactif le rendu de ces templates est erroné. Je voudrais que lorsque le module est désactivé, cela affiche tout simplement le template category.tpl, le template par defaut des categories et que le categorycontroller soit également celui par defaut et non l'overridé du module. Je sais pas si je suis bien clair. Link to comment Share on other sites More sharing options...
coeos.pro Posted January 24, 2014 Share Posted January 24, 2014 Sinon ce que tu peux faire c'est utiliser les fonctions isInstalled et/ou isEnabled de la classe Module et dans ton override tu rajoutes au début : if(!Module::isInstalled('mon_module')) return ; Link to comment Share on other sites More sharing options...
RomsWebDesign Posted January 24, 2014 Author Share Posted January 24, 2014 Merci pour tes réponses. En cherchant un peu dans la classe Module j'ai enfin trouvé comment faire. Dans la classe de mon module j'ai fait ceci. /** * Desactivate current module. * * @param bool $forceAll If true, disable module for all shop */ public function disable($forceAll = false) { // Disable module for all shops parent::disable($forceAll); if(!$this->isEnabled()) parent::uninstallOverrides(); } /** * Activate current module. * * @param bool $forceAll If true, enable module for all shop */ public function enable($forceAll = false) { if(parent::enable($forceAll)) parent::installOverrides(); } Je sais pas si c'est la meilleure façon de le faire mais ça fonctionne. Link to comment Share on other sites More sharing options...
coeos.pro Posted January 24, 2014 Share Posted January 24, 2014 si ça fonctionne, rajoute [Résolu] devant le sujet du 1er post en cliquant sur Modifier puis Utiliser l'éditeur complet. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now