Votre boutique passe à PrestaShop 9, mais un module n'est plus maintenu par son développeur. Devez-vous le faire mettre à niveau ou reconstruire ? Nous avons mis à niveau des dizaines de modules écrits pour PrestaShop 1.5 jusqu'à 8. Dans cet article, vous découvrirez les indices que nous examinons, un auto-test rapide et ce que chaque solution implique pour votre boutique.
Pourquoi les anciens modules plantent sous PrestaShop 9
PrestaShop 9 représente une étape plus importante que la plupart des mises à jour de version. Un module qui fonctionnait parfaitement sur la version 1.7 ou 8 peut bloquer l'installation, perturber une page ou, pire encore, faire planter l'ensemble du back-office. Les causes sont presque toujours les mêmes :
- Une version PHP plus récente. PrestaShop 9 requiert PHP 8.1 ou une version ultérieure. Le code écrit pour PHP 5 ou 7 se heurte à des types plus stricts, des fonctions supprimées et des avertissements devenus des erreurs.
- Un Symfony plus récent. PrestaShop 9 fonctionne sous Symfony 6.4 (PrestaShop 8 sous Symfony 4.4). Les modules utilisant des services, formulaires ou routes Symfony de l'ancienne version doivent être adaptés.
- Méthodes et constantes du noyau supprimées. Les fonctions dépréciées depuis des années, telles que
Tools::displayPrice()ouajaxDie(), ont disparu. Un module qui continue de les appeler échoue dès que ce code s'exécute. - Bibliothèques qui ne sont plus incluses. Les modules plus anciens s'appuient parfois sur des bibliothèques que PrestaShop intégrait auparavant, telles que Guzzle 5 ou SwiftMailer. Sous PrestaShop 9, elles sont tout simplement absentes.
- Surcharges (overrides) de classes modifiées. Une surcharge remplace une partie d'une classe du noyau. Lorsque cette classe change, la surcharge peut briser la boutique ou annuler silencieusement un correctif.
Apprenez-en davantage sur ces changements dans PrestaShop 9 : ce qui change et PrestaShop 9.2.
Une mise à niveau suffit généralement lorsque
- le module s'installe et fonctionne actuellement sur PrestaShop 1.7 ou 8 ;
- les problèmes se limitent à des méthodes et constantes supprimées (telles que
Tools::displayPrice()ouajaxDie()) ; - le module conserve sa propre logique dans ses propres fichiers et comporte peu de surcharges ;
- ses templates utilisent Smarty ou Twig de manière classique, de sorte que la couche d'affichage reste inchangée ;
- vous êtes satisfait de ce que fait le module et souhaitez simplement qu'il continue à fonctionner.
La plupart de ces correctifs sont mécaniques : le module continue d'exécuter exactement la même tâche, seul le code appelé est mis à jour. Les modules écrits pour PrestaShop 1.5 et 1.6 se prêtent également bien à une mise à niveau. Vos réglages et vos données restent en place, et le module conserve son apparence et son fonctionnement initiaux.
Envisagez une reconstruction lorsque
- le module génère beaucoup de HTML en PHP et l'affiche sans l'échapper : sécuriser cela implique de déplacer toute la couche d'affichage vers des templates ;
- il surcharge plusieurs classes du noyau dont les méthodes ont changé dans PrestaShop 9 ;
- il dépend d'un autre module qui n'a pas été mis à niveau (par exemple, un module de paiement de base) ;
- il intègre d'anciennes bibliothèques que PrestaShop 9 ne prend plus en charge, telles que Guzzle 5 ou SwiftMailer ;
- il est très volumineux et doit en outre réussir le PrestaShop Validator ;
- vous souhaitez de toute façon de nouvelles fonctionnalités et modifieriez donc une grande partie du code.
Une reconstruction n'est pas un échec pour l'ancien module. Parfois, le code s'est simplement développé au fil des ans de telle sorte qu'une mise à niveau propre demande plus de travail que de repartir sur une conception claire.
Auto-test rapide
| Ce que vous observez | Indique |
|---|---|
| Le module fonctionne sur PrestaShop 8 et plante uniquement sur la version 9 | Mise à niveau |
| Les erreurs mentionnent une méthode ou une classe supprimée | Mise à niveau |
| Le module ne comporte aucune ou très peu de surcharges | Mise à niveau |
| Les pages du module sont générées sous forme de chaînes HTML en PHP | Reconstruction ou mise à niveau importante |
| Plusieurs surcharges de classes du noyau | Reconstruction ou mise à niveau importante |
| Le module nécessite un autre module dépourvu de version pour PrestaShop 9 | Examiner ce module en premier |
| Vous souhaitez modifier le comportement du module | Reconstruction |
Ce sont des indices, pas des règles absolues. Un module peut cocher une case menant à une reconstruction tout en pouvant être mis à niveau sans problème. C'est pourquoi nous effectuons des tests avant de communiquer un tarif.
Ce qu'il faut vérifier avant de prendre une décision
- Consultez d'abord le développeur. Vérifiez la page du module ou PrestaShop Addons : une version pour PrestaShop 9 est peut-être déjà disponible.
- Listez les fonctionnalités du module. Quelles fonctions utilisez-vous réellement ? Une reconstruction permet d'écarter ce dont personne n'a besoin.
- Vérifiez les dépendances. Le module requiert-il un autre module, une fonctionnalité du thème ou un service externe ?
- Analysez les surcharges. Dans le back-office, sous Paramètres avancés > Informations, vous pouvez voir si des surcharges sont actives.
- Planifiez cela avec la mise à niveau de la boutique. Si toute votre boutique passe à PrestaShop 9, testez l'ensemble des modules sur une copie de sauvegarde. Découvrez notre approche dans notre service de mise à niveau PrestaShop.
Ce que nous faisons
Lorsque vous nous transmettez un module, nous commençons par le tester dans un environnement PrestaShop 9.2 isolé et établissons un devis basé sur nos observations. Si une reconstruction s'avère plus pertinente, nous vous en informons avant tout paiement. Faites mettre à niveau votre module ou demandez-nous de l'analyser.