Disponible pour missions & renforts d’agence · Réponse rapide, par la personne qui intervient

Les modifications d’un module écrasées à chaque mise à jour

Un module acheté fait presque ce que vous voulez. Quelqu’un a ouvert son fichier, changé trois lignes, et tout allait bien — jusqu’à la mise à jour qui a remis les fichiers d’origine. Ce n’est pas un accident : c’est le fonctionnement normal d’une mise à jour, et il existe des façons de s’en protéger.

Décrire mon problème Discuter sur WhatsApp

Pourquoi la modification directe ne survit jamais

Une mise à jour remplace les fichiers du module par ceux de la nouvelle version. Elle ne compare pas, elle ne fusionne pas, elle écrase. Tout ce qui a été écrit à l’intérieur du dossier du module disparaît, sans avertissement et sans trace. Le symptôme est reconnaissable : une fonction sur mesure qui disparaît deux fois par an, toujours après une opération de maintenance, et que personne ne relie à la mise à jour parce que l’intervalle est long.

Le second effet est plus vicieux : tant que la modification tient, elle bloque de fait les mises à jour. Comme personne ne veut la reperdre, le module reste sur une vieille version, accumule les incompatibilités et finit par poser un problème bien plus large que celui qu’on avait voulu régler.

Quatre façons d’adapter un module sans le modifier

  • Passer par les points d’extension prévus

    Beaucoup de modules déclarent leurs propres points d’accroche. Un module tiers écrit correctement se laisse compléter de l’extérieur, sans qu’aucune de ses lignes ne soit touchée.

  • Surcharger le gabarit depuis le thème

    Sur PrestaShop, un thème peut fournir sa propre version du gabarit d’un module. Sur WooCommerce, le mécanisme équivalent passe par un dossier dédié dans le thème enfant. La modification vit alors dans le thème, pas dans le module.

  • Écrire un petit module complémentaire

    Un module dédié qui s’accroche après le module d’origine et modifie son résultat. C’est la solution la plus propre quand la modification touche un comportement et pas seulement un affichage.

  • Utiliser le système de traduction

    Quand la modification ne concerne qu’un texte, elle passe par le système de traduction de la plateforme, qui est prévu pour cela et qui survit aux mises à jour.

Quand le module ne laisse aucune prise

Certains modules ne déclarent aucun point d’extension et construisent leur affichage sans passer par un gabarit surchargeable. Dans ce cas, il n’y a pas de solution élégante, et je préfère l’annoncer plutôt que de laisser croire l’inverse. Restent trois options, dans cet ordre de préférence.

Demander l’ajout d’un point d’extension à l’éditeur du module : c’est gratuit, c’est parfois accepté, et c’est la seule solution qui règle le problème définitivement. Sinon, dupliquer le module sous un autre nom et l’assumer comme un module à vous, en sachant que vous renoncez à ses mises à jour et que vous en devenez le mainteneur. Enfin, conserver la modification à part sous forme de correctif documenté, à réappliquer après chaque mise à jour — c’est la moins bonne, mais au moins la modification est écrite quelque part et ne se perd pas.

Ce que je ne fais pas : modifier un module et ne rien dire. Une modification non documentée dans un code que quelqu’un mettra à jour dans six mois est un piège pour la personne suivante, y compris quand cette personne, c’est moi.

Pages liées

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.

Que doit faire le module ?
Sur quelle version de PrestaShop ?
Où le module doit-il s’intégrer ? (facultatif)
Avez-vous déjà essayé un module du marché ? (facultatif)

Savoir ce qui a échoué évite de reproduire la même limite.

Pour quand ? (facultatif)
Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Questions fréquentes

Puis-je simplement empêcher la mise à jour du module ?
Techniquement oui, et c’est ce qui se fait par défaut sans qu’on le décide. Mais un module figé accumule les incompatibilités avec la plateforme et PHP, et peut porter des failles corrigées ailleurs. C’est une dette qui se paie plus tard.
Comment savoir si mes modifications ont été écrasées ?
En comparant les fichiers du module avec ceux de la version publiée : les différences sautent aux yeux. Sur un site sans versionnement, c’est le seul moyen, et c’est aussi la raison pour laquelle je mets les modifications ailleurs que dans le module.
Une surcharge de gabarit dans le thème survit-elle vraiment ?
Elle survit aux mises à jour du module, oui. En revanche, si le module change la structure de ses données, le gabarit surchargé peut cesser d’afficher la bonne chose : il faut le revérifier après un changement de version majeure du module.
Vaut-il mieux faire développer un module équivalent ?
Quand la modification touche le cœur du fonctionnement et que le module n’offre aucune prise, souvent oui. Un module écrit pour votre besoin coûte plus cher à l’achat, mais il n’y a plus rien à réappliquer après chaque mise à jour.