Categories
Prestashop

Override Module.php Prestashop

Mais c’est quoi un override ?

« Override » peut se traduire par : « outrepasser ».

Pour faire simple, il s’agit de dupliquer le fichier que l’on veut modifier dans un répertoire précis, et PrestaShop l’utilise, sans tenir compte du fichier d’origine. Il permet de créer de nouvelles fonctions, ou tout simplement de modifier une fonction existante, sans toucher celle d’origine. Dans mon cas, je crée un nouveau fichier nommé exactement comme la classe parente : Module.php, il devra être enregistré sous : « prestashop/override/classes/module/Module.php »

Voici en exemple une des fonctions de mon fichier, qui me permet par la suite de créer différents modules. Ici, la fonction SlideOuiNon qui permet d’ajouter un bouton Oui|Non avec différentes options.

<?php

/*
  Version :	2020.02.16
  Auteur	:	GASQUY Vincent
*/

/* @var _LOG_OVERRIDE_MODULE_ */
if (!defined('_LOG_OVERRIDE_MODULE_')) {
define('_LOG_OVERRIDE_MODULE_', Configuration::get('LOG_OVERRIDE_MODULE'));
}
  
abstract class Module extends ModuleCore 
{
      
  /* @var name */
  public $versionOverrideModule = '2020.02.16';
  
  
  /*
    Slide Oui/Non
    
    $label			: (obligatoire) Nom de l'évenement
    $settings		        : (obligatoire) array(des paramètres) $settings[0][$name]
    $name			: (obligatoire) nom principale du "name"
    $name1			: (facultatif)  nom secondaire du "name"
    $texte			: (facultatif)  texte d'aide affiché dessous le bouton du slide
    $class			: (facultatif)  class dans la div principale
    $class1			: (facultatif)  class dans la div secondaire
  */
  public function SlideOuiNon($label, $settings, $name, $name1 = NULL, $texte = NULL, $class = NULL, $class1 = NULL)
  {
    $select = ($settings ? $settings[0][$name] : '');
    $html = '
    <div class="form-group '.$class.'">
      <label class="control-label col-lg-3">'.$this->l($label).' :</label>
      <div class="col-lg-7">
        <span class="switch prestashop-switch fixed-width-lg '.$class1.'">
          <input type="radio"'.($select == 1 ? ' checked="checked" ' : ' ').'value="1" id="'.($name1 ? $name1 : $name).'_on" name="'.$name.'">
          <label for="'.($name1 ? $name1 : $name).'_on">
            '.$this->l('Oui').'
          </label>
          <input type="radio"'.($select == 0 ? ' checked="checked" ' : ' ').'value="0" id="'.($name1 ? $name1 : $name).'_off" name="'.$name.'">
          <label for="'.($name1 ? $name1 : $name).'_off">
            '.$this->l('Non').'
          </label>
          <a class="slide-button btn"></a>
        </span>
        '.($texte ? '<p class="help-block">'.$this->l($texte).'</p>' : '').'
      </div>';
      if(_LOG_OVERRIDE_MODULE_ === "1") {
        $html .= '<div class="col-lg-12" style="border:2px solid #f00; padding:0;">
          <table width="100%"  BORDER="1">
            <tr>
              <td colspan="2" align="center">FUNCTION: SlideOuiNon</td>
            </tr>
            <tr>
              <td>$label</td>
              <td>'.$label.'</td>
            </tr>
            <tr>
              <td>$settings</td>
              <td>'.print_r($settings, true).'</td>
            </tr>
            <tr>
              <td>$name</td>
              <td>'.$name.'</td>
            </tr>
            <tr>
              <td>$name1</td>
              <td>'.$name1.'</td>
            </tr>
            <tr>
              <td>$texte</td>
              <td>'.$texte.'</td>
            </tr>
            <tr>
              <td>$class</td>
              <td>'.$class.'</td>
            </tr>
            <tr>
              <td>$class1</td>
              <td>'.$class1.'</td>
            </tr>
          </table>
        </div>';
      }
    $html .= '</div>';
    return $html;
  }
  
    
}
override module.php
Fonction SlideOuiNon

Vous pouvez retrouver mon override complet du fichier Module.php ici

Pour une plus grande compréhension de mon override Module.php, voici le module gratuit overridemodule

Bon à savoir

N’oubliez pas d’écraser le fichier « /cache/class_index.php » la première fois que vous ajoutez un fichier d’override afin que les changements soient pris en compte, ne vous inquiétez pas celui-ci est régénéré automatiquement par Prestashop

En Conclusion

Les overrides nous permettent donc de développer de nouvelles fonctionnalités non prévues ou non implémentées dans le core de PrestaShop afin de pouvoir répondre aux demande spécifiques.

Ces fonctionnalités seront conservées en cas d’évolution des modules ou du core de l’outil, permettant ainsi de proposer un développement pérenne même si lors de mises à jour majeures, notre code pourra être amené à évoluer en conséquence.

1 reply on “Override Module.php Prestashop”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *