Développer un module personnalisé sur PrestaShop : guide pratique et bonnes pratiques
PrestaShop est une solution e-commerce particulièrement flexible. L'un de ses principaux avantages est la possibilité d'ajouter de nouvelles fonctionnalités grâce à son système de modules.
Dans un projet e-commerce, il arrive régulièrement que les fonctionnalités natives de PrestaShop ne répondent pas complètement aux besoins du client. On peut avoir besoin d'ajouter un champ personnalisé, de modifier le comportement d'une page, d'automatiser une action ou encore d'améliorer l'expérience utilisateur.
Dans ce type de situation, développer un module personnalisé peut être une bonne solution.
Mais comment commencer ? Quelle structure utiliser ? Et surtout, comment développer un module facile à maintenir et à faire évoluer ?
Dans cet article, nous allons découvrir les bases du développement d'un module PrestaShop avec un exemple concret.
1. Pourquoi développer un module personnalisé ?
Avant de modifier le code d'une boutique PrestaShop, il est important de réfléchir à la meilleure approche.
Il existe plusieurs possibilités :
- Modifier directement les fichiers du cœur de PrestaShop.
- Utiliser les overrides.
- Modifier les fichiers du thème.
- Développer un module personnalisé.
Dans la plupart des cas, le développement d'un module est préférable lorsqu'on souhaite ajouter une fonctionnalité indépendante.
Pourquoi ?
Parce qu'un module permet de mieux organiser le code et de limiter les modifications du cœur de PrestaShop.
Il facilite également la maintenance et permet de réutiliser une fonctionnalité sur plusieurs boutiques.
Par exemple, on peut développer un module pour :
- Ajouter un champ personnalisé sur une fiche produit.
- Modifier certaines informations affichées dans le panier.
- Ajouter une fonctionnalité dans le compte client.
- Automatiser certaines actions.
- Connecter PrestaShop à une API externe.
2. Comprendre la structure d'un module PrestaShop
Un module PrestaShop est généralement placé dans le dossier :
/modules/
Pour notre exemple, nous allons créer un module appelé mymodule.
Sa structure sera la suivante :
modules/ └── mymodule/ ├── mymodule.php ├── index.php └── logo.png Le fichier principal mymodule.php contient la classe du module. C'est lui qui permet à PrestaShop de reconnaître et de charger le module.
Pour commencer, créons ce fichier.
3. Créer le premier module
Voici un exemple simple de module compatible avec l'architecture classique de PrestaShop 1.7 et 8.
<?php if (!defined('_PS_VERSION_')) { exit; } class MyModule extends Module { public function __construct() { $this->name = 'mymodule'; $this->tab = 'front_office_features'; $this->version = '1.0.0'; $this->author = 'Developer'; $this->need_instance = 0; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('My Custom Module'); $this->description = $this->l( 'A simple custom PrestaShop module.' ); $this->ps_versions_compliancy = [ 'min' => '1.7.0.0', 'max' => _PS_VERSION_, ]; } public function install() { return parent::install(); } public function uninstall() { return parent::uninstall(); } } Quelques explications :
-
__construct(): définit les informations principales du module. -
install(): exécute les opérations nécessaires à l'installation. -
uninstall(): gère la désinstallation. -
parent::install(): appelle le processus d'installation natif de PrestaShop.
Une fois le fichier créé, place le dossier dans /modules/, puis accède à la page des modules depuis le back-office pour installer ton module.
4. Utiliser les hooks pour ajouter des fonctionnalités
Les hooks sont l'un des mécanismes les plus importants dans le développement PrestaShop.
Ils permettent d'exécuter du code à des endroits précis du fonctionnement de la boutique, sans modifier directement les fichiers du cœur.
Par exemple, imaginons que nous souhaitions afficher un message personnalisé sur la fiche produit.
Nous pouvons utiliser le hook displayFooterProduct.
Ajoutons d'abord son enregistrement dans la méthode install() :
public function install() { return parent::install() && $this->registerHook('displayFooterProduct'); } Ensuite, ajoutons la méthode correspondante :
public function hookDisplayFooterProduct($params) { return '<div class="custom-message"> Découvrez nos produits et nos nouveautés ! </div>'; } Après installation du module, PrestaShop pourra exécuter cette méthode lorsque le hook sera appelé.
Il existe de nombreux autres hooks pour intervenir dans différentes parties de la boutique :
-
displayHeader: ajout de ressources dans l'en-tête. -
displayFooter: affichage de contenu dans le pied de page. -
displayProductAdditionalInfo: informations complémentaires sur une fiche produit. -
actionCartSave: action liée à l'enregistrement du panier.
Le choix du hook dépend toujours de la fonctionnalité recherchée et des hooks disponibles dans la version de PrestaShop utilisée.
5. Ajouter une configuration dans le back-office
Un bon module doit idéalement permettre à l'administrateur de modifier certains paramètres sans intervenir dans le code.
Prenons l'exemple d'un message personnalisable.
Nous pouvons enregistrer une valeur avec la classe Configuration.
Voici un exemple :
public function install() { return parent::install() && Configuration::updateValue( 'MYMODULE_MESSAGE', 'Bienvenue dans notre boutique !' ) && $this->registerHook('displayFooterProduct'); } Pour récupérer cette valeur :
$message = Configuration::get('MYMODULE_MESSAGE'); Cette approche permet de stocker des paramètres de configuration directement dans PrestaShop.
Pour aller plus loin, il est possible de créer un formulaire de configuration dans le back-office avec HelperForm ou le système de formulaires Symfony selon la version et l'architecture du projet.
6. Les bonnes pratiques à respecter
Développer un module fonctionnel est une première étape. Développer un module fiable et maintenable demande davantage de rigueur.
Voici quelques bonnes pratiques importantes :
1. Ne jamais modifier directement le cœur de PrestaShop
Les modifications directes peuvent être écrasées lors d'une mise à jour et compliquer la maintenance.
2. Utiliser les hooks autant que possible
Ils permettent de connecter le module aux différents événements et emplacements de PrestaShop.
3. Sécuriser les données
Il faut toujours valider les données reçues et utiliser les mécanismes adaptés pour les requêtes SQL, les formulaires et les appels AJAX.
4. Organiser le code
Éviter de placer toute la logique métier dans le fichier principal du module. Pour les modules plus complexes, séparer les contrôleurs, les services, les templates et les classes métier.
5. Tester avant la mise en production
Vérifier l'installation, la désinstallation, les interactions avec les autres modules et le fonctionnement sur les différentes pages concernées.
6. Vérifier la compatibilité
Un module développé pour PrestaShop 1.7 ne fonctionnera pas nécessairement de la même manière sur PrestaShop 8 ou 9. Il faut toujours vérifier les différences d'architecture et les API disponibles.
7. Conclusion
Le développement de modules personnalisés est une compétence essentielle pour les développeurs qui travaillent avec PrestaShop.
Grâce aux hooks, aux classes natives et aux mécanismes de configuration, il est possible d'ajouter des fonctionnalités adaptées aux besoins d'une boutique sans modifier directement le cœur de la plateforme.
Mon conseil : commencez par développer de petits modules, comprenez le fonctionnement des hooks et prenez le temps de bien organiser votre code.
Avec de la pratique, vous pourrez progressivement créer des modules plus complexes, capables de répondre à des besoins métier spécifiques.
Et vous, préférez-vous développer vos propres modules PrestaShop ou adapter des modules existants ? Partagez vos expériences en commentaire !``

