webasun Posted October 9, 2012 Share Posted October 9, 2012 Bonjour, je m'arrache les cheveux pour accrocher tout simplement le module blocktopmenu à un nouveau hook que je viens de créer. Voila les opérations effectué: 1- j'ai été dans la base de donnée et j'ai ajouté mon hook "menu" dans la table ps-hook INSERT INTO `Mabase`.`ps_hook` (`id_hook`, `name`, `title`, `description`, `position`, `live_edit`) VALUES (NULL, 'menu', 'mon menu', 'Emplacement du menu', '1', '0'); 2- J'ai ajouté dans blocktopmenu.php public function hookmenu($params) { return $this->hookDisplayTop($params); } 3- J'ai fait un override de la classe FrontController <?php class FrontController extends FrontControllerCore { public function displayHeader() { self::$smarty->assign(array( 'HOOK_MENU' => Module::hookExec('menu'), 'HOOK_AUTREHOOK' => Module::hookExec('autrehook') )); return parent::displayHeader(); } } 4- J'ai ajouté à l'emplacement voulu, dans le fichier header.tpl le hook menu {$HOOK_MENU} 5- J'ai greffé mon module sur le bon hook dans le backoffice. Voila j'ai suivi la même procédure qu'avant avec la 1.4 et ça ne fonctionne pas, rien ne s'affiche. Je ne comprend pas très bien le php mais je pense qu'il y a un problème dans l'override car le code ne me semble pas à jour pour la 1.5 Pourriez vous m'aider à greffer ce module sur ce hook car je n'ai trouvé pour le moment aucune solution fonctionnel sur le forum, dans la doc ( qui est d’ailleurs quasi inexistante ) ou sur le web . De plus je pense que ça servira à d'autre qui se pose la même question que moi. Merci pour votre aide. Link to comment Share on other sites More sharing options...
webasun Posted October 9, 2012 Author Share Posted October 9, 2012 Personne ne connais la réponse à ma question ou es ce que ce n'est pas assez claire ? Link to comment Share on other sites More sharing options...
TiBaker Posted October 12, 2012 Share Posted October 12, 2012 Alors moi j'ai suivis un PDF (tuto) espliquatif... http://stephane-bacquer.com/PrestaShop-1.5.pdf. Mais la solution proposé sa fonctionné pas en tous cas pas complètement. Cependant j'ai trouvé une solution plus radical qui fonctionne parfaitement avec la version 1.5.x 1- Vous aller dans le dossier racine du site puis dossier "classes/controller/FrontController.php 2- Vous éditez avec notpad ou coda pour moi par exemple et vous allez à la ligne ->448. 3- Vous allez voir cette function : if (!isset($this->context->cart)) $this->context->cart = new Cart(); $this->context->smarty->assign(array( 'HOOK_HEADER' => Hook::exec('displayHeader'), 'HOOK_TOP' => Hook::exec('displayTop'), 'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''), 'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''), VOUS RAJOUTEZ LES HOOKS MANUELLEMENT !!!! 'HOOK_BANNIER' => Hook::exec('topBanniere'), 'HOOK_MENU_HAUT' => Hook::exec('topMenuHaut'), 'HOOK_RECHERCHE' => Hook::exec('topRecherche'), 'HOOK_PANIER' => Hook::exec('boitePanier'), PAR EXEMPLE POUR MOI !!!! )); 4- Vous allez dans les moduels que vous voulez gréffé sur un Hook prédéfini juste en haut par exemple. 5- Je prend le modules panier : - Je reviens à la racine du site puis dossier modules/blockcart/blockcart.php 1.1- Vous partez à la ligne 167 et vous allez voir cette function : public function install() { if ( parent::install() == false || $this->registerHook('top') == false || $this->registerHook('header') == false TU RAJOUTE CETTE LIGNE || $this->registerHook('boitePanier') == false || Configuration::updateValue('PS_BLOCK_CART_AJAX', 1) == false) return false; return true; } 6- Tu vas dans ton interface admin de prestashop puis modules puis tu cherche le modules "panier" tu désinstalle puis tu re-installe et voilà c'est autamatiquement ajoutez dans la table HOOK de la base de donnée c'est le seul qui fonctionne dans le tuto (PSD) en dessus ! sauf qu'il faut faire manuellement étape 3,4,5 !!! Maintenant tu va positionné ton module sur le HOOK dans position dans ton interface Admin de prestashop... 7- Pour finir tu va ajoute la fonction smarty {$HOOK_PANIER} ou tu veux !!! dans tes fichiers .tpl ou autre !!! Voilà j'espère que ça a répondu à ta question bonne continuation...! Link to comment Share on other sites More sharing options...
TiBaker Posted October 12, 2012 Share Posted October 12, 2012 Avant l'étape 6- tu dois rajouté aussi dans le fichier "modules/blockcart/blockcart.php" après la function -> public function hookRightColumn($params) { if (Configuration::get('PS_CATALOG_MODE')) return; // @todo this variable seems not used $this->smarty->assign('order_page', strpos($_SERVER['PHP_SELF'], 'order') !== false); $this->assignContentVars($params); return $this->display(__FILE__, 'blockcart.tpl'); } public function hookboitePanier($params) { if (Configuration::get('PS_CATALOG_MODE')) return; // @todo this variable seems not used $this->smarty->assign('order_page', strpos($_SERVER['PHP_SELF'], 'order') !== false); $this->assignContentVars($params); return $this->display(__FILE__, 'blockcart.tpl'); } N'oublie pas de dégréffé le module sur les HOOK par défaut c'est çà passe cool ! Link to comment Share on other sites More sharing options...
Fernand WAFO Posted July 2, 2014 Share Posted July 2, 2014 Bonjour, Ces articles peuvent vous aider - http://cleandev.net/fr/cleanblog/astuces-prestashop/tout-savoir-sur-les-hooks-dans-prestashop-astuces-cr%C3%A9ation-et-utilisation - http://cleandev.net/fr/cleanblog/astuces-prestashop/liste-et-d%C3%A9tails-de-tous-les-hooks-de-prestashop-en-fran%C3%A7ais Cordialement, 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