PrestaShop
Écrire un module compatible PrestaShop 1.7 et 8
Beaucoup de boutiques sont encore en 1.7 pendant que d’autres passent en 8. Maintenir deux versions d’un même module double le travail ; le plus simple est d’en écrire une seule qui tourne sur les deux. Ça demande un peu de discipline, pas de magie.
public function __construct()
{
$this->name = 'w4umodule';
$this->tab = 'administration';
$this->version = '2.0.0';
$this->author = 'W4U';
$this->need_instance = 0;
$this->bootstrap = true;
// Une seule déclaration couvre 1.7.6 et toute la branche 8
$this->ps_versions_compliancy = ['min' => '1.7.6.0', 'max' => '8.99.99'];
parent::__construct();
}
Les points de vigilance : les méthodes Tools dépréciées depuis longtemps et supprimées en 8, les hooks renommés pendant la vie de la 1.7, et la version de PHP. PrestaShop 8 accepte PHP 8.1, alors que la 1.7.8 s’arrête à PHP 7.4 : le code doit donc rester valide sur les deux, sans fonctions supprimées en PHP 8 ni syntaxe trop récente pour PHP 7.2. Pour tester, deux boutiques de développement, une par branche, et chaque version du module passe sur les deux avant d’être livrée.
// Supprimées dans PrestaShop 8 : Tools::jsonDecode() et Tools::jsonEncode()
$donnees = Tools::jsonDecode($reponse, true);
$donnees = json_decode($reponse, true); // fonctionne partout
// Quand un comportement diffère vraiment, on teste la version, une seule fois
if (version_compare(_PS_VERSION_, '8.0.0', '>=')) {
// chemin PrestaShop 8
} else {
// chemin PrestaShop 1.7
}
Sources
- Documentation développeur PrestaShop 8, changements pour les modules devdocs.prestashop-project.org