zerros Posted November 17, 2011 Share Posted November 17, 2011 Bonjour, J'essaie d'ajouter un nouveau hook à prestashop, mais sans succès. Et pourtant il me semble avoir fait ce qu'il faut (en suivant les tutos): Nom du hook: TestHook - Création du hook en base avec phpmyadmin dans ps_hook - Modification du fichier classes/FrontController.php: 'HOOK_TESTHOOK' => Module::hookExec('TestHook'), - Modification d'un fichier tpl. J'ai choisi header.tpl: <body ...> ... {$HOOK_TESTHOOK} ... </body> - Mise en place dans mon module: public function install() { $languages = Language::getLanguages(false); if(!parent::install()) return false; if (!$this->registerHook('TestHook')) return false; return true; } public function hookTestHook($params) { global $smarty; return $this->display(__FILE__, 'testmodule.tpl'); } Ai-je oublié quelque chose ? J'ai mis dans mon tpl: <p> <em> lsdfksdklsfskfskfkslfjsdkjsfjskjfsklfsfsdk sjkfnsj n sd sdsfnsjk </em> </p> J'espère que vous pourrez m'aider. Link to comment Share on other sites More sharing options...
olea Posted November 17, 2011 Share Posted November 17, 2011 Un petit refresh du cache smarty peut-être ? Link to comment Share on other sites More sharing options...
sersow Posted November 17, 2011 Share Posted November 17, 2011 Bonjour, Comme vous avez choisi header.tpl pour l'affichage, je pense qu'il faut faire dans ton hookTestHook return $this->display(__FILE__, 'header.tpl'); Link to comment Share on other sites More sharing options...
olea Posted November 17, 2011 Share Posted November 17, 2011 @sersow Le display du header.tpl est appelé depuis le hookHeader, pas depuis le hook nouvellement créé Link to comment Share on other sites More sharing options...
sersow Posted November 17, 2011 Share Posted November 17, 2011 J'essaierai de faire comme ceci public function install() { $languages = Language::getLanguages(false); if(!parent::install()) return false; if (!$this->registerHook('TestHook')) return false; if (!$this->registerHook('hookHeader')) return false; return true; } public function hookHeader($params) { return hookTestHook($params); } Link to comment Share on other sites More sharing options...
Sbizz Posted November 17, 2011 Share Posted November 17, 2011 Bonjour. Il serait intéressant de rester dans les normalisations de Prestashop : à savoir que le premier mot n'a pas sa première lettre en majuscule. C'est un détail, mais par moment ça peut changer pas mal de chose. M'enfin. Ensuite, tentez de mettre un die('toto') dans la fonction hookTestHook, pour voir si cette dernière est bien appelée, cela vous permettra de situer un peu mieux le problème. Link to comment Share on other sites More sharing options...
J. Danse Posted November 17, 2011 Share Posted November 17, 2011 Le hook est-il bien créé dans la base de donnée, d'ailleurs ? Link to comment Share on other sites More sharing options...
Captain FLAM Posted November 18, 2011 Share Posted November 18, 2011 Tout me semble correct, je pense qu'il doit s'agir d'un problème de "casse" un exemple de code : function install() { if ( ! parent::install()) return false; $hooked = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'hook` WHERE name = "slider"'); if (!is_array($hooked) || sizeof($hooked) == 0) Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'hook` ( `id_hook` ,`name` ,`title` ,`description` ,`position`) VALUES (NULL , "slider", "Slider", "Slider page", "1");'); if (!$this->registerHook('slider') ) return false; return true; } function hookSlider($params) { .... et dans l'override : 'HOOK_SLIDER' => Module::hookExec('slider'), Link to comment Share on other sites More sharing options...
zerros Posted December 6, 2011 Author Share Posted December 6, 2011 Bonjour, désolé pour le temps de réponse, le forum ne me préviens pas des réponses même si je choche la case ... à moins que les mails arrivent en spam ... Je vais vérifier ça. Je vais tester ces solutions et je vous dirai si j'ai des problèmes. Merci Link to comment Share on other sites More sharing options...
ultraxa Posted December 19, 2011 Share Posted December 19, 2011 bonjour ou faut il mettre dans l'override 'HOOK_MY' => Module::hookExec('MyHook'), j'ai la version 1.46 et je pense que les fichiers ont un peu changé merci Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now