Vous vous lancez dans le développement de modules PrestaShop ? Ce guide complet vous explique pas à pas comment créer votre premier module en 2025, avec toutes les bases essentielles pour bien démarrer. Que vous soyez développeur débutant ou confirmé, vous trouverez ici toutes les informations nécessaires pour créer votre premier module fonctionnel.
Pourquoi créer un module PrestaShop personnalisé ?
Le développement d'un module sur mesure offre une flexibilité incomparable pour adapter votre boutique à vos besoins spécifiques. En 2025, avec l'évolution constante du e-commerce, il devient crucial de pouvoir personnaliser son site pour se démarquer de la concurrence.
Voici les principaux avantages de créer son propre module :
- Personnalisation totale des fonctionnalités selon vos besoins
- Meilleure maîtrise du code et des performances
- Absence de dépendance aux mises à jour d'éditeurs tiers
- Possibilité de commercialiser votre module sur la marketplace
- Optimisation du code pour vos besoins spécifiques
Les prérequis pour commencer
Avant de vous lancer dans le développement, assurez-vous d'avoir :
- Une installation locale de PrestaShop 1.8 (WAMP, MAMP ou Docker)
- Des connaissances de base en PHP 7.2+ et HTML
- Un éditeur de code (VS Code, PHPStorm, Sublime Text)
- Une compréhension basique du modèle MVC
- Git pour la gestion de versions (recommandé)
- Composer pour la gestion des dépendances
- Un environnement de test dédié
La structure de base d'un module PrestaShop
La première étape consiste à créer le dossier de votre module dans le répertoire /modules
de votre installation PrestaShop. Par convention, le nom du dossier doit suivre certaines règles strictes :
- Utiliser uniquement des caractères minuscules
- Éviter les caractères spéciaux et les espaces
- Choisir un nom descriptif et unique
- Ne pas dépasser 64 caractères
L'arborescence complète recommandée
monpremiermodule/
├── monpremiermodule.php
├── config.xml
├── composer.json
├── README.md
├── LICENSE.md
├── logo.png
├── controllers/
│ ├── admin/
│ └── front/
├── src/
│ ├── Entity/
│ └── Repository/
├── sql/
│ ├── install.php
│ └── uninstall.php
├── translations/
│ ├── fr.php
│ └── en.php
└── views/
├── css/
├── js/
├── img/
└── templates/
├── admin/
└── hook/
Le fichier principal de votre module en détail
Le fichier principal est crucial car il définit le comportement de base de votre module. Voici une version plus complète avec les méthodes essentielles :
<?php
if (!defined('_PS_VERSION_')) {
exit;
}
class MonPremierModule extends Module
{
public function __construct()
{
$this->name = 'monpremiermodule';
$this->tab = 'front_office_features';
$this->version = '1.0.0';
$this->author = 'Votre Nom';
$this->need_instance = 0;
$this->bootstrap = true;
$this->ps_versions_compliancy = [
'min' => '1.8.0.0',
'max' => _PS_VERSION_
];
parent::__construct();
$this->displayName = $this->l('Mon Premier Module');
$this->description = $this->l('Un module complet pour découvrir le développement PrestaShop.');
$this->confirmUninstall = $this->l('Êtes-vous sûr de vouloir désinstaller ce module ?');
}
public function install()
{
include(dirname(__FILE__).'/sql/install.php');
return parent::install() &&
$this->registerHook('displayHome') &&
$this->registerHook('displayHeader') &&
$this->registerHook('displayBackOfficeHeader') &&
Configuration::updateValue('MONPREMIERMODULE_LIVE_MODE', false);
}
public function uninstall()
{
include(dirname(__FILE__).'/sql/uninstall.php');
return parent::uninstall() &&
Configuration::deleteByName('MONPREMIERMODULE_LIVE_MODE');
}
public function hookDisplayHeader()
{
$this->context->controller->addCSS($this->_path.'views/css/front.css');
$this->context->controller->addJS($this->_path.'views/js/front.js');
}
}
Configuration avancée avec composer.json
La gestion des dépendances est essentielle pour un module moderne. Voici une configuration plus détaillée :
{
"name": "votre-nom/monpremiermodule",
"description": "Module PrestaShop pour découvrir le développement",
"type": "prestashop-module",
"license": "AFL-3.0",
"authors": [
{
"name": "Votre Nom",
"email": "votre@email.com"
}
],
"require": {
"php": ">=7.2.0",
"prestashop/prestashop": "~1.8.0"
},
"require-dev": {
"phpunit/phpunit": "^8.5",
"phpstan/phpstan": "^0.12"
},
"autoload": {
"psr-4": {
"MonPremierModule\\": "src/"
},
"classmap": [
"controllers/"
]
},
"config": {
"preferred-install": "dist",
"prepend-autoloader": false
},
"scripts": {
"test": "phpunit",
"analyse": "phpstan analyse"
}
}
Créer des fonctionnalités avancées
Gestion de la configuration avec formulaires
Voici un exemple complet de formulaire de configuration :
public function getContent()
{
$output = '';
$errors = [];
if (Tools::isSubmit('submitMonPremierModuleModule')) {
$liveMode = Tools::getValue('MONPREMIERMODULE_LIVE_MODE');
if (!Validate::isBool($liveMode)) {
$errors[] = $this->l('Mode invalide');
}
if (empty($errors)) {
Configuration::updateValue('MONPREMIERMODULE_LIVE_MODE', $liveMode);
$output .= $this->displayConfirmation($this->l('Settings updated'));
} else {
$output .= $this->displayError(implode('<br>', $errors));
}
}
return $output . $this->renderForm();
}
protected function renderForm()
{
$helper = new HelperForm();
$helper->show_toolbar = false;
$helper->table = $this->table;
$helper->module = $this;
$helper->default_form_language = $this->context->language->id;
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG', 0);
$helper->identifier = $this->identifier;
$helper->submit_action = 'submitMonPremierModuleModule';
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false)
. '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->tpl_vars = array(
'fields_value' => $this->getConfigFormValues(),
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
);
return $helper->generateForm(array($this->getConfigForm()));
}
Utilisation avancée des hooks
Les hooks permettent d'interagir avec PrestaShop de manière non intrusive. Voici quelques exemples d'utilisation avancée :
public function hookDisplayHome($params)
{
$this->context->smarty->assign([
'live_mode' => Configuration::get('MONPREMIERMODULE_LIVE_MODE'),
'shop_name' => Configuration::get('PS_SHOP_NAME'),
'my_module_link' => $this->context->link->getModuleLink('monpremiermodule', 'display'),
'my_module_message' => $this->l('Bienvenue sur mon module'),
'my_module_page' => Tools::getValue('controller'),
]);
return $this->display(__FILE__, 'views/templates/hook/home.tpl');
}
public function hookActionProductAdd($params)
{
// Logique lors de l'ajout d'un produit
}
public function hookActionOrderStatusPostUpdate($params)
{
// Logique lors du changement de statut d'une commande
}
Bonnes pratiques et optimisation
Standards de code
Pour maintenir un code propre et maintenable :
- Suivez des standards tel que le PSR-4
- Commentez votre code de manière claire et concise
- Utilisez des noms de variables et méthodes explicites
- Évitez la duplication de code
- Implémentez des tests unitaires
Sécurité
Points essentiels pour sécuriser votre module :
- Validez toujours les entrées utilisateur
- Utilisez les fonctions d'échappement appropriées
- Protégez vos contrôleurs contre les accès non autorisés
- Suivez les recommandations OWASP
- Utilisez les tokens CSRF de PrestaShop
Performance
Pour optimiser les performances :
- Minimisez les requêtes SQL
- Utilisez le cache de PrestaShop
- Optimisez vos assets (CSS/JS)
- Évitez les boucles inutiles
- Utilisez les indexes de base de données
Tester et déployer votre module
Tests approfondis
Avant tout déploiement, effectuez les tests suivants :
- Tests unitaires avec PHPUnit
- Tests d'intégration
- Tests de compatibilité multilingue
- Tests de performance
- Tests de sécurité
- Tests d'installation/désinstallation
- Tests de mise à jour
Préparation au déploiement
Checklist avant déploiement :
Vérifier la compression des assets Valider la documentation Nettoyer le code des éléments de debug Vérifier les traductions Préparer le changelog Tagger la version sur Git
Le développement de modules PrestaShop est un excellent moyen d'étendre les fonctionnalités de votre boutique tout en maintenant une base de code propre et maintenable. Avec de la pratique, vous pourrez créer des modules de plus en plus complexes et personnalisés. N'oubliez pas de consulter régulièrement la documentation officielle de PrestaShop et de suivre les meilleures pratiques de la communauté pour rester à jour avec les dernières évolutions de la plateforme.
Happy coding! 🚀