Ce message se veut ĂȘtre un complĂ©ment au billet de Webbax

J’ai eu Ă  travailler sur l’override de Prestashop. Ce n’est pas compliquĂ©, en tout cas beaucoup plus simple que de modifier les fichiers “cƓurs” de Prestashop et si c’est bien fait beaucoup plus stable.

Le but Ă©tait de rajouter trois Hooks gĂ©nĂ©riques : un pour l’ajout d’un Objet (produit, fabriquant, bon de rĂ©duction
), un pour sa mise Ă  jour et un pour sa suppression.

Dans les versions 1.3 et prĂ©cĂ©dentes j’aurais dĂ» modifier le fichier classes/ObjectModel.php qui est un peu complexe et faire une version pour chaque version de Prestashop.

Mais là que du bonheur, il faut créer un fichier override/classes/ObjectModel.php comme ci-dessous :

<?php
 
class ObjectModel extends ObjectModelCore
{   
    public function add($autodate = true, $nullValues = false)
    {
        $result = parent::add($autodate, $nullValues);
        if ($result)  Module::hookExec('objectAdd', array('object' => $this));
        return $result;
    }
 
    public function update($autodate = true, $nullValues = false)
    {
        $result = parent::update($autodate, $nullValues);
        if ($result)  Module::hookExec('objectUpdate', array('object' => $this));
        return $result;
    }
 
    public function delete($autodate = true, $nullValues = false)
    {
        $result = parent::delete($autodate, $nullValues);
        if ($result)  Module::hookExec('objectDelete', array('object' => $this));
        return $result;
    }
}
 

C’est petit hein ?

Le principe est simple, pour chaque mĂ©thode (add(), update() et delete() ), on laisse l’objet parent faire son travail ( parent::add() ) et en fonction du rĂ©sultat on appelle ou non le hook.

Ainsi on a pas touchĂ© au cƓur de Prestashop, le fichier ajoutĂ© est simple et facile Ă  maintenir et surtout il sera compatible avec les futures version de Prestashop.