Créer son premier module PrestaShop 1.8 : Guide pratique 2025

Vous souhaitez développer votre premier module PrestaShop 1.8 ? Ce guide complet vous accompagne pas à pas dans la création de votre module, des fichiers essentiels jusqu'à l'installation. Découvrez les bonnes pratiques et astuces pour bien démarrer, même sans expérience approfondie en développement. Un tutoriel accessible qui vous donnera toutes les bases nécessaires.

Créer son premier module Prestashop 1.8

Créer son premier module PrestaShop 1.8 : Guide pratique 2025

Vous souhaitez développer votre premier module PrestaShop 1.8 ? Ce guide complet vous accompagne pas à pas dans la création de votre module, des fichiers essentiels jusqu'à l'installation. Découvrez les bonnes pratiques et astuces pour bien démarrer, même sans expérience approfondie en développement. Un tutoriel accessible qui vous donnera toutes les bases nécessaires.

Photo Maxime Benard
Le
Lecture de 9 minutes

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! 🚀

Le marketing d'affiliation & le e-commerce, un combo gagnant ?
L’affiliation est devenue un levier incontournable pour les sites e-commerce. En collaborant avec des influenceurs, vous boostez vos ventes et votre image de marque. Découvrez les avantages, les défis, et un exemple concret avec IPLN.fr, qui a doublé son chiffre d’affaires grâce à une stratégie d’affiliation innovante.
Optimisation des performances sur un site web
Optimisez la performance de votre site web pour améliorer le SEO et l'expérience utilisateur. Découvrez les principaux facteurs de ralentissement, des solutions pratiques et des outils pour diagnostiquer et résoudre vos problèmes.