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.