[Prestashop] Comment ajouter un HOOK
Saturday, 31 Dec 2011 13:09
Voici un aide-mémoire (dans les grandes lignes) pour ajouter un HOOK sous Prestahsop 1.4.6
Dans la base de donnée, sous ps_hook, ajouter le hook
INSERT INTO `prestashop`.`ps_hook` (
`id_hook` ,
`name` ,
`title` ,
`description` ,
`position` ,
`live_edit`
)
VALUES (
NULL , 'manufacturerFooter', 'Manufacturer Footer', NULL , '1', '0'
);
Dansl le fichier /class/fontController, ajouter la ligne
'HOOK_FOOTER_MANUFACTURER' => Module::hookExec('manufacturerFooter')
à la ligne 473, comme ceci:
self::$smarty->assign(array(
'HOOK_HEADER' => Module::hookExec('header'),
'HOOK_TOP' => Module::hookExec('top'),
'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn'),
'HOOK_CATEGORY_HORIZONTAL' => Module::hookExec('categoryHorizontal'),
'HOOK_FOOTER_MANUFACTURER' => Module::hookExec('manufacturerFooter')
));
Ajouter le hook dans le fichier voulu
(Dans mon cas je l'ai mis dans footer.tpl)
{$HOOK_FOOTER_MANUFACTURER}
Ouvrir le fichier correspondant au module et apporter des modifications
(Dans mon cas, je veux greffer le block manufacturer au-dessus du footer)
/modules/manafuacturer/manufacturer.php
et ajouter ceci:
function hookManufacturerFooter($params){
return $this->hookLeftColumn($params);
}
juste au-dessous de la fonction function hookRightColumn($params)
Ensuite, désinstaller et réinstaller le module Manufacturer
Pour modifier l'affichage du block, il est aussi possible de copier le contenu de la fonction hookRightColumn($params) dans la fonction hookManufacturerFooter($params) et de modifier le tpl qui est appelé par cette dernier. Personnellement, je copie le /modules/manufacturer/manaufacturer.tpl dans /themes/monteheme/modules/manaufacturer/manufacturer.tpl et je crée une copie de manufacturer.tpl et le renomme ainsi /themes/monteheme/modules/manaufacturer/manufacturerFooter.tpl.
Finalement dans ma fonction hookManufactuererFooter, je retrouve ceci:
function hookManufacturerFooter($params){
global $smarty, $link;
$smarty->assign(array(
'manufacturers' => Manufacturer::getManufacturers(),
'link' => $link,
'text_list' => Configuration::get('MANUFACTURER_DISPLAY_TEXT'),
'text_list_nb' => Configuration::get('MANUFACTURER_DISPLAY_TEXT_NB'),
'form_list' => Configuration::get('MANUFACTURER_DISPLAY_FORM'),
'display_link_manufacturer' => Configuration::get('PS_DISPLAY_SUPPLIERS'),
));
return $this->display(__FILE__, 'blockmanufacturerFooter.tpl');
}
Il me reste plus qu'a faire mes modifications dans manufacturerFooter.tpl sans affecter les fichiers originaux.
Voilà, c'est une explication rapide, mais j'espère que ca vous apportera une bonne direction