Modifier le hook d’un module sous Prestashop

Déplacer des modules est particulièrement simple dans le back-office de Prestashop. Toute fois, il est possible que vous obtenniez le message d’erreur suivant: « Ce module ne peut être accroché à ce hook ».
Cela signifie que le module n’est pas prévu pour être positionné là où vous le demandez. Ce qui ne veux pas dire que c’est impossible. Voici comment faire.

Je vais prendre l’exemple du mobule « bloc newsletter » mais le principe est le même pour tout les modules.
Le but ici est de permettre à ce module de se greffer dans le footer de notre site.

– Ouvrez le fichier /modules/blocknewsletter/blocknewsletter.php et repérez la fonction « install »



public function install()
{
if (parent::install() == false OR $this->registerHook('leftColumn') == false OR $this->registerHook('header') == false)
return false;
return Db::getInstance()->Execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'newsletter` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`newsletter_date_add` DATETIME NULL,
`ip_registration_newsletter` varchar(15) NOT NULL,
`http_referer` VARCHAR(255) NULL,
PRIMARY KEY(`id`)
) ENGINE='._MYSQL_ENGINE_.' default CHARSET=utf8');
}


Modifiez la parenthèse du if en ajoutant un hook supplémentaire comme ceci:



if (parent::install() == false OR $this->registerHook('leftColumn') == false OR $this->registerHook('header') == false OR $this->registerHook('footer') == false)

footer‘ correspond au nom technique de mon emplacement. Vous pouvez trouver les noms de chaque emplacement dans la partie « position » de l’onglet « module » dans le backoffice.

Il faut ensuite, toujours dans le même fichier, ajouter une fonction d’accroche qui va s’appeler « hookFooter » (vu que c’est sur le footer que l’on veut l’accrocher)



function hookFooter($params)
{
return $this->hookLeftColumn($params);
}


Ici on ne se fatigue pas trop on demande simplement à réutiliser la fonction hookLeftColumn qui est une fonction déjà définie dans notre classe. Selon le module que vous modifiez le nom de la fonction peut changer. Tout dépend du point d’accroche sur lequel votre module se greffe par défaut.

Désormais si vous allez dans la gestion des positions des modules vous pourrez greffer le bloc newsletter à votre footer.

Laisser un commentaire

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