Toutes les clefs pour réussir dans le e-commerce

Mes modules Prestashop

Hook Prestashop

J’expliquais dans mon article précédent comment greffer un module sur un hook supplémentaire. Ici je vais vous expliquer comment créer un nouveau hook que vous pourrez utiliser dans vos templates.

Créer un hook: Prestashop 1.6

Ajouter le hook dans la base de données.

Rendez-vous dans votre base de données et ajoutez-y votre point d’accroche:


INSERT INTO `ps_hook` (`id_hook`, `name`, `title`, `description`, `position`, `live_edit`) VALUES (NULL, 'DisplayMonHook', 'DisplayMonHook', 'La description de mon hook', '1', '1');

Placer votre hook dans votre template

Ouvrez le template sur lequel vous voulez ajouter votre hook.
Puis placez le code suivant là où votre hook doit apparaître:


{hook h="DisplayMonHook"}

Pensez à vider le cache de smarty.

Créer un hook: Prestashop 1.5

Enregistrez le hook dans la base de données.

Ouvrez phpMyadmin et affichez la table “ps_hook”.
Insérez un nouvel enregistrement à l’aide de cette requête:



INSERT INTO `ps_hook` (`id_hook`, `name`, `title`, `description`, `position`, `live_edit`) VALUES (NULL, 'DisplayMonHook', 'DisplayMonHook', 'La description de mon hook', '1', '1');


Surchargez la classe “frontControllerCore”.

Allez dans le dossier “override/classes” et créez le fichier “FrontController.php“.
Ajoutez-y le code suivant:


class FrontController extends FrontControllerCore {
public function displayHeader()
{

if (!self::$initialized)
parent::init();
self::$smarty->assign(array(
'HOOK_TOP3' => Module::hookExec('DisplayMonHook')
));
return parent::displayHeader();
}
}


Voila vous venez d’assigner à Smarty votre nouveau hook

/*** edit suite au commentaire de Pierre et dominique ***/

Placez votre hook dans votre template

Dernière étape (la plus facile).

Ouvrez votre template et placez votre hook où vous désirez le voir apparaître.



<div id="top3">
{$HOOK_TOP3}
</div>


Autorisez un module à utiliser un nouveau hook

Choisissez le module que vous désirez accrocher à votre nouveau hook.
L’idée est de créer une nouvelle avec le nom de notre hook qui va utiliser une fonction déjà existante du module.

Si par défaut votre module peut se greffer au point d’accroche “DisplayLeftColumn” alors on appelera la fonction hookDisplayLeftColumn.
Voici donc la fonction que vous devez ajouter à votre module.



[code language="php"]
public function hookTop3($params)
{
return $this->DisplayMonHook($params);
}

Et là j’ai créé ma fonction de hook pour mon

Hook Prestashop
4 (80%) 1 vote

Poster un Commentaire

19 Commentaires sur "Hook Prestashop"

Recevoir un email pour
avatar
Trier par:   plus récent | plus vieux | Plus de vote
jack
Invité
jack

Merci pour ce tuto qui fonctionne avec les dernières versions de Prestashop !
Juste ce qu’il me fallait

Pierre
Invité
Pierre

Bonjour Olivier et merci pour ce tutorial qui fonctionne à merveille, enfin presque…
La création du nouveau Hook fonctionne très bien mais depuis j’ai l’erreur suivante sur la page “envoyer à un ami” :
Fatal error: Call to a member function assign() on a non-object in C:\wamp\www\prestashop\override\classes\FrontController.php on line 5

Je ne comprends, quel est le problème ?
Merci

Pierre
Invité
Pierre

Merci maniT4c, mais ce que je ne comprends, c’est que la page envoyer un ami focntionne bien sans la création du fichier FrontController.php mais ne fonctionne plus lorsque ce fichier est présent…
Comment instancier la classe smarty ?
Merci

Pierre
Invité
Pierre

J’ai ouvert un post sur le forum prestashop, j’attends un retour…

Pierre
Invité
Pierre
dominique
Invité
dominique

Bonjour,
J’obtiens la meme erreur Call to a member function assign() on a non-object avec les modules blockwishlist et mailalerts.
Sinon ça marche impec sur tout le site.

Voici la fonction que j’utilise dans l’ovveride du frontController:

public function displayHeader()
{
self::$smarty->assign(array(
‘HOOK_TOP_META_LEFT’=>Module::hookExec(‘topMetaLeft’),
‘HOOK_TOP_META_RIGHT’ => Module::hookExec(‘topMetaRight’)
));

return parent::displayHeader();
}
Le probleme vient bien de smarty mais je ne sais pas comment le resoudre

Si qqun a une idée je suis preneur :-)

dominique
Invité
dominique

Problème résolu pour moi en modifiant l’override comme ci-dessous :-) :

public function displayHeader()
{
if (!self::$initialized)
parent::init();
self::$smarty->assign(array(
‘HOOK_TOP_META_LEFT’ => Module::hookExec(‘topMetaLeft’),
‘HOOK_TOP_META_RIGHT’ => Module::hookExec(‘topMetaRight’)
));
return parent::displayHeader();
}

Que qqun me corrige svp si ce n’est pas la bonne manière de procéder.

également posté sur http://www.prestashop.com/forums/topic/181431-probleme-frontcontrollerphp/

mickael
Invité
mickael

Je me mets seulement à Prestashop depuis quelques mois et ce tuto tombe à pic, enfin j’espère qu’il va me permettre d’aller un peu plus loin.

Nicolas
Invité
Nicolas

Bonsoir,

merci pour ce tuto, par contre moi je rencontre le souci suivant:

j’ajoute mon frontController.php à “override/classes” et la boutique n’est plus accessible!

j’ai respecter scrupuleusement le code donné ci-dessus et même remplacer quelques truc pour voir mais j’ai l’impression que c’est le nom “frontController” qui fait planter le site.

Il ya un autre fichier “_frontController.php” dans “classes” a quoi sert-il?

pour info je suis en 1.4.9

Nicolas
Invité
Nicolas

Merci pour m’avoir répondu j’ai crée un poste avec plus de précision ici: http://www.prestashop.com/forums/topic/181431-resolu-probleme-frontcontrollerphp/

le navigateur me met “erreur serveur” dès que je charge le fichier frontController.php

(a coté les autres étapes fonctionnent, mon module et bien associé au hook: homeTop tout semble fonctionner) par contre rien est afficher pour l’instant dans le hook coté BackOffice manque plus que ce fichu frontController j’imagine…

Merci pour ton aide

Nicolas
Invité
Nicolas

Je reviens ici car je suis toujours bloqué sur mon FrontController.php qui veux pas fonctionner
j’ai mis un post mais personne ne semble sen préoccuper du coup si quelqu’un suit encore cette page veut-il bien a voir la gentilles de de jeter un rapide coup d’oeil? Merci. Rien que pour me donner des piste car je suis vraiment bloquer depuis une semaine la dessus et rien à se sujet sur le net..

Nicolas
Invité
Nicolas
Pierre
Invité
Pierre

Bonsoir,
Je suis assez novice dans prestashop, j’ai voulu installer le module “Customer follow-up v1.0.0 – par PrestaShop” j’ai eu un message d’erreur et depuis lors plus moyen de me reconnecter sur ma page admin

wpDiscuz