Jump to content

[RESOLU] Créer un hook (V1.4)


Recommended Posts

Bonjour,

Je souhaite créer un hook pour pouvoir mettre le module newsletter dans une page CMS
Je cherche des solutions à droite et à gauche, mais rien ne s'affiche ...

voila ce que j'ai fais pour le moment

1. J'ai inséré une ligne dans la table hook :

INSERT INTO ps_hook( id_hook, name, title, description, position )VALUES (NULL , "newsletter", "Newsletter", "Newsletter", "1")



2. J'ai modifier classes/FrontController.php

self::$smarty->assign(array(
           'HOOK_HEADER' => Module::hookExec('header'),
           'HOOK_TOP' => Module::hookExec('top'),
           'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn')
       ));


par

self::$smarty->assign(array(
           'HOOK_NEWSLETTER' => Module::hookExec('Newsletter'),
           'HOOK_HEADER' => Module::hookExec('header'),
           'HOOK_TOP' => Module::hookExec('top'),
           'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn')
       ));



3. Dans modules/blocknewsletter/blocknewsletter.php, j'ai ajouté :

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



Dans themes/pretashop/cms.tpl j'ai ajouté :

{HOOK_NEWSLETTER}



4. Puis j'ai greffé mon block newsletter à mon hook.

J'ai du me tromper ou oublier quelques choses, puisque ça ne marche pas

merci de votre aide !

Link to comment
Share on other sites

ah ben si j'ai trouvé ce qu'il manque :

tu n'as pas d'enregistrement du module dans la table PREFIX_hook_module

Cet enregistrement se fait généralement dans la method install du module

$this->registerHook('nomduhook')




au passage tu aurais du exploiter les capacités d'override de la 1.4 plutot que modifier directement FrontController

Link to comment
Share on other sites

merci de te pencher sur mon problème

dans modules/blocknewsletter/blocknewsletter.php
j'ai donc remplacer :

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



par :

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



puis j'ai tout désinstallé puis réinstaller mais pareil rien du tout
pour être plus précis des que je met le hook dans ma page ça bloque tout le contenu, et ce qui suit comme le pied de page

est ce que tu verrai une autre erreur ou un oubli que j'aurai pu faire ?

merci !

Link to comment
Share on other sites

Oui c'est bien mieux :)

Tu fais bien de préciser que la page ne s'affiche pas du tout ...

Tu as inséré 'newsletter' comme nom de hook dans la bdd et non NewsLetter (ça c'est dans titre et description)

Il me semble bien que hookExec est sensible à la casse , non ?

si tu essayes ça dans tes assigns : ?

self::$smarty->assign(array(
           'HOOK_NEWSLETTER' => Module::hookExec('newsletter'),
           'HOOK_HEADER' => Module::hookExec('header'),
           'HOOK_TOP' => Module::hookExec('top'),
           'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn')
       ));

Link to comment
Share on other sites

J'ai corrigé comme tu m'a dit mais c'est pareil malheureusement, j'ai toujours rien

J'ai essayé en mettant "Newsletter" partout puis ensuite "newsletter",
mais rien n'y fais, il ne m'aime pas ....

Link to comment
Share on other sites

J'ai trouvé !!

erreur à 2 balles ...

j'ai remplacé

{HOOK_NEWSLETTER}


par

{$HOOK_NEWSLETTER}



:red:

bon je vais aller m'acheter un fouet pour me flageller ...

merci beaucoup pour ton aide !

la prochaine fois je regarderai du coté des capacités d’override de la 1.4 :)

Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...