Jump to content

Encore une histoire de Hook


Recommended Posts

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

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

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

"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

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

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: :angry: :angry:

Link to comment
Share on other sites

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...