Appuyer sur Entrée pour voir les résultats ou Échap pour annuler.

Overrider un module PrestaShop

Bonjour tout le monde !

Aujourd’hui je vais vous expliquer comment overrider un module, c’est à dire comment améliorer son apparence ou son fonctionnement sans risquer de perdre toutes vos modifications lors d’une mise à jour de votre boutique ou du module lui-même.

Pour cet exemple, je me baserai sur le module Produits mis en avant sur la page d’accueil (homefeatured).

Modifier l’apparence du module

L’apparence du module en Front office se fait à l’aide de trois types de fichiers:

  • Les fichiers .tpl pour la récupération des variables et la mise en forme des informations
  • Les fichiers .css pour appliquer votre graphisme à ces informations
  • Les fichiers .js pour effectuer des calculs en javascript, réaliser des animations…

Les fichiers .tpl

Le module Produits mis en avant sur la page d’accueil dispose de deux fichiers .tpl, mais je ne vais me préoccuper ici que du fichier:

  • modules/homefeatured/views/templates/hook/homefeatured.tpl

Afin d’apporter des modifications à ce fichier, vous pourriez tout simplement le modifier.
Cependant, si vous effectuez ensuite une mise à jour de ce module, toutes vos modifications seront perdues. D’où l’intérêt de pouvoir l’overrider.
Pour ce faire, il est nécessaire de copier ce fichier et de le coller dans votre thème après avoir créé le dossier suivant:

  • themes/votre-theme/modules/homefeatured/views/templates/hook/homefeatured.tpl

Ce fichier ne sera jamais mis à jour. Que ce soit lors de la mise à jour du module, de votre boutique ou de votre thème.

Une fois le fichier dupliqué, vous pouvez le modifier comme vous le souhaitez. Par exemple en supprimant ou en déplaçant des informations.

Les fichiers .css et .js

La modification des fichiers .css et .js se fait exactement de la même manière.
Ils se trouvent dans les dossiers:

  • modules/homefeatured/views/css/homefeatured.css
  • modules/homefeatured/views/js/homefeatured.js

et doivent être dupliqués dans les dossiers:

  • themes/votre-theme/css/modules/homefeatured/homefeatured.css
  • themes/votre-theme/js/modules/homefeatured/homefeatured.js

Modifier le fonctionnement du module

Depuis la version 1.6.0.11 de PrestaShop, il est possible d’overrider également le fonctionnement du module, à travers le fichier:

  • modules/homefeatured/homefeatured.php

Pour l’overrider, créez tout dabord un nouveau fichier vide à cet emplacement:

  • override/modules/homefeatured/homefeatured.php

Ouvrez ensuite ce fichier et collez le code suivant:

<?php

if (!defined('_PS_VERSION_'))
    exit;

class HomeFeaturedOverride extends HomeFeatured
{
}

Vous aurez remarqué que l’on a ajouté Override à la fin de la classe et que celle-ci étend la classe d’origine du module.

Enfin, à l’intérieur de cette classe, copiez, collez et modifiez simplement les fonctions que vous souhaitez.

<?php

if (!defined('_PS_VERSION_'))
    exit;

class HomeFeaturedOverride extends HomeFeatured
{
    public function hookDisplayHome($params)
    {
        *Your code*

         return $this->display(__FILE__, 'homefeatured.tpl', $this->getCacheId());
    }
}

Voilà, vous savez maintenant comment overrider un module proprement.
Plus de problème lors de vos mises à jour !