canel Posted January 11, 2017 Share Posted January 11, 2017 Bonjour tout le monde ! Bon je m'arrache les cheveux depuis hier, j'ai suivi au moins une dizaine de tuto mais j'ai décidé de faire ma blonde.... Je souhaite mettre le module Menu Horizontal dans un nouveau Hook, actuellement il est placé sur le hook TOp (thème par défault bootstrap) Je récapitule ce que j'ai fait : Dans le fichier blocktopmenu.php, j'ai ajouté à la ligne 66 !$this->registerHook('menuHaut') : public function install($delete_params = true) { if (!parent::install() || !$this->registerHook('header') || !$this->registerHook('menuHaut') || !$this->registerHook('actionObjectCategoryUpdateAfter') || Ensuite plus bas j'ai ajouté : public function hookMenuHaut($params) { return $this->hookHeader($params); } Après dans mon thème header.tpl j'ai fait appel à mon hook : {hook h='menuHaut'} J'ai désinstallé le module puis réinstaller, hourra dans les positions j'ai bien menuHaut ! Sauf qu'il ne s'affiche pas en front. Si j'active sa position par défaut c'est à dire DisplayTop là il s'affiche 2 fois ! si je le dégreffe de displayTop il ne s'affiche plus du tout..... Aidez-moi svp !!!! Link to comment Share on other sites More sharing options...
Gnast Posted January 11, 2017 Share Posted January 11, 2017 Bonjour, J'espère que t'a fait un back up des fichiers que tu as modifier, avant même de toucher les fichiers php et tpl est-ce que tu as essayer de le greffer dans modules>positions>greffer un module? Pourquoi cela affiche deux fois? Parce que dans le tpl tu as ajouter ton hook donc il affiche le menu une fois et ton hook qui le rappelle une deuxième fois . Link to comment Share on other sites More sharing options...
canel Posted January 11, 2017 Author Share Posted January 11, 2017 Merci Gnast, oui je suis en local donc pas de soucis. Oui j'ai bien greffé mon module, je ne comprend pas ta dernière phrase, parce que dans le tpl tu as ajouter ton hook.... ? Je l'ai dégreffé de son hookTop donc il ne devrait s'afficher que dans le hookMenuhaut Link to comment Share on other sites More sharing options...
Gnast Posted January 11, 2017 Share Posted January 11, 2017 "Après dans mon thème header.tpl j'ai fait appel à mon hook : {hook h='menuHaut'}" Normalement tu n'as pas besoin de toucher au tpl, essaye de supprimer {hook h='menuHaut'}" et de l'afficher dans le displaytop pour voir s'il y a encore 2 fois le menu Link to comment Share on other sites More sharing options...
Gnast Posted January 11, 2017 Share Posted January 11, 2017 Essaye de reprendre la function de displayTop public function hookDisplayTop($param) { $this->user_groups = ($this->context->customer->isLogged() ? $this->context->customer->getGroups() : array(Configuration::get('PS_UNIDENTIFIED_GROUP'))); $this->page_name = Dispatcher::getInstance()->getController(); if (!$this->isCached('blocktopmenu.tpl', $this->getCacheId())) { if (Tools::isEmpty($this->_menu)) { $this->makeMenu(); } $shop_id = (int)$this->context->shop->id; $shop_group_id = Shop::getGroupFromShop($shop_id); $this->smarty->assign('MENU_SEARCH', Configuration::get('MOD_BLOCKTOPMENU_SEARCH', null, $shop_group_id, $shop_id)); $this->smarty->assign('MENU', $this->_menu); $this->smarty->assign('this_path', $this->_path); } $html = $this->display(__FILE__, 'blocktopmenu.tpl', $this->getCacheId()); return $html; } et de le mettre dans ta function menuhaut, tu reinstalle et si tu vois bien 2 menu (1 dans display top et 1 dans menuhaut) tu pourras alors le dégreffer de displaytop Link to comment Share on other sites More sharing options...
canel Posted January 11, 2017 Author Share Posted January 11, 2017 Je met ton code dans mon fichier blocktopmenu.php ? Link to comment Share on other sites More sharing options...
canel Posted January 11, 2017 Author Share Posted January 11, 2017 J'ai mis ton code dans un fichier nommé blocktopmenu.php en override dans mon thème. J'ai laissé mes autres codes. Quand je veux greffé le module à l'emplacement j'ai le message : Ce module a déjà été transplanté sur ce hook. :angry: :angry: Link to comment Share on other sites More sharing options...
Gnast Posted January 11, 2017 Share Posted January 11, 2017 dans ta fonction public function hookMenuHaut($params) { return $this->hookHeader($params); } tu remplace le conntenu de la fonction par la mienne et tu regardes si sa marche Link to comment Share on other sites More sharing options...
canel Posted January 11, 2017 Author Share Posted January 11, 2017 bon définitivement je vais pas y arriver, ça parait tout simple mais je bute... [PrestaShop] Fatal error in module Module.php(1224) : eval()'d :Cannot redeclare Blocktopmenu::hookDisplayTop() Link to comment Share on other sites More sharing options...
Gnast Posted January 11, 2017 Share Posted January 11, 2017 essaye de le remplacer par public function hookMenuHaut($params) { $html = $this->display(__FILE__, 'blocktopmenu.tpl', $this->getCacheId()); return $html; } Link to comment Share on other sites More sharing options...
canel Posted January 11, 2017 Author Share Posted January 11, 2017 Merci Gnast, J'ai remplacé le code, désinstaller le module, réinstaller et au moment de le greffer j'ai "Ce module a déjà été transplanté sur ce hook." Link to comment Share on other sites More sharing options...
Gnast Posted January 11, 2017 Share Posted January 11, 2017 c'est normal car il le greffe automatiquement lors de l'installation Link to comment Share on other sites More sharing options...
canel Posted January 11, 2017 Author Share Posted January 11, 2017 ah ok alors pourquoi il n'apparait pas ni sur le front ni dans le listing des positions ? Link to comment Share on other sites More sharing options...
Gnast Posted January 11, 2017 Share Posted January 11, 2017 Hum je n'ai pas trop le temps pour faire des tests la mais tu devrais jeter un coup d'oeil la http://doc.prestashop.com/display/PS14/Mieux+comprendre+et+utiliser+les+hooks 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