Deux modules qui se marchent dessus
Chaque module fonctionne parfaitement quand il est seul. Activés ensemble, ils cassent le panier, vident une page ou bloquent l’administration. Un conflit ne se devine pas en lisant les descriptions : il se prouve en isolant, et il y a une méthode pour ça.
Ce qui trahit un conflit plutôt qu’un bug
- La panne est apparue exactement au moment de l’installation d’un module, sans autre changement
- Désactiver le module fautif règle le problème, mais l’autre module perd sa fonction
- Une page s’arrête au milieu, la partie basse ne s’affiche plus
- Un bouton ne réagit plus, et la console du navigateur affiche une erreur de script
- Le back-office devient inaccessible immédiatement après une activation
Les quatre formes de conflit que je rencontre
Le conflit de surcharge. Sur PrestaShop, un module peut remplacer le comportement d’une classe du cœur en déposant un fichier de surcharge. Deux modules qui veulent remplacer la même méthode de la même classe ne peuvent pas cohabiter : le second refuse de s’installer, ou pire, écrase silencieusement le premier si les fichiers ont été déposés à la main. C’est la cause la plus fréquente d’un module qui « ne fait plus rien » alors qu’il est actif.
Le conflit d’ordre. Deux modules accrochés au même endroit s’exécutent l’un après l’autre, et le second peut annuler ce que le premier a fait : recalculer un total, remplacer un contenu, redéfinir un prix. L’ordre est modifiable, et modifier l’ordre suffit parfois à tout régler.
Le conflit de bibliothèque. Deux modules chargent chacun leur propre version d’une même bibliothèque JavaScript. La page charge les deux, la seconde écrase la première, et tout ce qui dépendait de la version initiale s’arrête. C’est visible dans la console du navigateur, pas dans les journaux du serveur.
Le conflit de nom. Deux extensions déclarent une fonction ou une classe portant le même nom, et PHP s’arrête net avec une erreur fatale de redéclaration. Sur WordPress, c’est un classique des extensions qui embarquent la même bibliothèque tierce sans précaution.
Comment j’identifie le coupable sans casser la boutique
-
Travailler sur une copie, pas en production
L’isolement par désactivation successive n’est pas acceptable sur une boutique qui vend. Je duplique le site, et j’y fais les manipulations qui seraient inacceptables en ligne.
-
Lire les journaux avant de toucher quoi que ce soit
Une erreur fatale de redéclaration nomme le fichier et la ligne : le conflit est identifié en une minute, sans aucune désactivation.
-
Dichotomie plutôt que désactivation une par une
Je désactive la moitié des modules, je teste, puis je recoupe la moitié restante. Sur une boutique qui compte de nombreux modules, cette méthode divise fortement le nombre d’essais.
-
Vérifier la console du navigateur en parallèle
Un conflit JavaScript ne laisse aucune trace côté serveur. Si la page se charge mais qu’un bouton reste inerte, la réponse est dans la console, pas dans les journaux PHP.
Une fois le coupable identifié, quatre issues possibles
La plus simple : changer l’ordre d’exécution, quand le conflit vient d’un écrasement de résultat. La deuxième : reporter la fonction d’un des deux modules dans un module unique qui fait les deux, ce qui supprime le conflit à la racine. La troisième : remplacer l’un des deux par une solution qui ne surcharge pas la même chose. La quatrième, la moins durable, consiste à corriger le module fautif dans son code — mais cette correction saute à sa prochaine mise à jour si elle n’est pas isolée.
Je signale toujours quand le conflit vient d’une pratique fragile plutôt que d’un accident : un module qui dépose une surcharge de classe du cœur pour ajouter un champ, ou qui embarque sa propre copie d’une bibliothèque commune, produira d’autres conflits plus tard, avec d’autres modules. Le remplacer coûte parfois moins cher que de le rafistoler à chaque fois.
Pages liées
-
Conflit d’extensions après une mise à jour
Le même sujet côté WordPress, quand le déclencheur est une mise à jour et non une installation.
-
Un module refuse de s’installer
Quand le conflit empêche l’installation elle-même plutôt que le fonctionnement.
-
Override ou module sur PrestaShop
Pourquoi la surcharge de classe est la technique qui produit le plus de conflits.
-
Erreur 500 PrestaShop
Quand le conflit se manifeste par une page blanche ou une erreur serveur.
Décrivez votre besoin en 1 minute
Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.