Le Blog



[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

(Pas de commentaire(s)...)
Laisser un commentaire
* Nom
* Email (ne sera pas affiché)
*
Quel est le caractère à la position 5 ?
yVYSrwFRjA
Réponse :
* Anti-spam
* - Champs obligatoire