Gouterman Posted July 30, 2012 Share Posted July 30, 2012 (edited) Bonjour, Alors voila mon problème, j'ai créer un nouveau hook, modifier un module etc... J'arrive à afficher mon module dans mon hook correctement, mais seulement en modifiant le fichier FrontController.php dans classes/controller/FrontController.php Je n'arrive pas à redéfinir la fonction iniContent() dans le dossier override de mon thème. J'ai beau essayé de le mettre dans override/classes/ ou override/classes/controller/ Impossible. Voila le code de la fonction initContent() surchargé. <?php class FrontController extends FrontControllerCore { public function initContent() { $this->process(); 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_MYHOOK' => Hook::exec('myHook'), '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)) : ''), )); } } ?> Merci. Edited July 30, 2012 by Gouterman (see edit history) Link to comment Share on other sites More sharing options...
J. Danse Posted July 30, 2012 Share Posted July 30, 2012 Le mieux est de ne plus mettre une variable Smarty comme HOOK_MYHOOK mais plutôt de mettre dans le fichier tpl correspondant ceci: {hook h="myHook"} C'est plus propre et ça ne modifie rien, même avec un override Link to comment Share on other sites More sharing options...
Gouterman Posted July 30, 2012 Author Share Posted July 30, 2012 Ah ben oui, tout de suite c'est mieux ! Merci. Link to comment Share on other sites More sharing options...
J. Danse Posted July 30, 2012 Share Posted July 30, 2012 Avec plaisir ! =) Link to comment Share on other sites More sharing options...
Frediteur Posted August 20, 2012 Share Posted August 20, 2012 Qui peut m'aider ? j'ai créé un Hook (mon premier) pour placer CleaniMLet jQery Carousel (comme sur ce site la http://www.lejardinduplaisir.com) Impossible de greffer le module dedans... je ne comprends pas J'obtiens encore et encore "Ce module ne peut être accroché à ce hook" Merci d'avance ! Fred Link to comment Share on other sites More sharing options...
Erikku Posted August 20, 2012 Share Posted August 20, 2012 Fred, il faut nous dire ce que tu as fait pour chercher d'où vient le problème. Link to comment Share on other sites More sharing options...
Frediteur Posted August 20, 2012 Share Posted August 20, 2012 Bonsoir, Merci pour ta réaction. bon en fait j'ai suivi ce tuto http://www.ve-studio.net/blog/ajouter-un-hook-sur-votre-boutique-e-commerce-prestashop/ 1. Exécutez cette requête dans votre base de données MySQL : INSERT INTO ps_hook ( 'name', 'title', 'description', 'position', 'live_edit') VALUES ( 'myhook', 'myhook', NULL, 1, 1); 2.self::$smarty->assign(array( 'HOOK_MYHOOKFRED' => Module::hookExec('myhookfred'), 'HOOK_HEADER' => Module::hookExec('header'), 'HOOK_TOP' => Module::hookExec('top'), 'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn') )); 3. C'est la que ca devient compliqué Déclarez dans votre module (mymodule.php) votre nouveau hook afin de pouvoir acrocher votre module au dit hook. Pour exemple : function hookMyhook($params){ return $this->hookRightColumn($params); } Etape 4 : Dans votre fichier TPL, il vous suffit de positionner votre hook à l'endroit souhaité en y faisant tout simplement appel. {$myhook} En fait j'ai fait plusieurs essais différents. Ce n'est pas clair..dans quel fichier TPL '(celui du hook?) comment adapter la fonction exemple Vivement que ce soit plus simple. SI vous pouvez me guider pour la fin ce serait fort gentil.... Fred Link to comment Share on other sites More sharing options...
Erikku Posted August 21, 2012 Share Posted August 21, 2012 C'est le code exact que tu as utilisé? Donne le INSERT que tu as fait. Si tu ne n'en souviens pas, cherche dans ps_look les valeurs exactes que tu as insérées. Et fait un copier/coller du code que tu as inséré. Et ton erreur, elle arrive quand tu fais quoi exactement? Link to comment Share on other sites More sharing options...
J. Danse Posted August 21, 2012 Share Posted August 21, 2012 Bonjour, Alors, de toute façon il faut oublier ce tuto qui est bon pour une 1.4 ; mais pas une 1.5. Désormais, il faut ajouter son hook en base de données (je n'ai pas encore regardé pour la création en code) et dans son tpl indiquer: {hook h="Myhook"} Dans son fichier PHP du module, nous aurons ceci: function hookMyhook($params){ return $this->hookRightColumn($params); } Et le tour est joué. 1 Link to comment Share on other sites More sharing options...
Frediteur Posted August 21, 2012 Share Posted August 21, 2012 Ouf, première fois depuis que j'ai attaqué Presta que je poste C'est magique d'avoir quelqu'un de l'autre coté! Merci donc d'avance Erikku J'ai copié ceci (a peu près comme il était expliqué) Modifier Éditer en place Copier Effacer 98 cleancarroussel MyHookFred hookFred 1 0 J'ai l'impression que l'erreur vient après... dans les fichiers php/tpl j'ai suivi le tuto en question...mais pas clair : dans quels fichiers doit on insérer du code? L'ERREUR c'est dans "positions"/ insérer un module > le message est "vous ne pouvez pas greffer un module sur ce hook" MERCI Fred Link to comment Share on other sites More sharing options...
Frediteur Posted August 21, 2012 Share Posted August 21, 2012 Merci J.Danse ! Heu j'ai la version 1.4.8.2 Bon j'essaie ce code dans le PHP du module Carroussel Fred Link to comment Share on other sites More sharing options...
J. Danse Posted August 21, 2012 Share Posted August 21, 2012 Dans ce cas, ... J'ai pas fait attention, vu que je ne suis les messages que de la 1.5 (ce forum, donc...) Link to comment Share on other sites More sharing options...
Erikku Posted August 21, 2012 Share Posted August 21, 2012 (edited) Donc le nom de ton hook, c'est 'cleancarroussel'. Et si tu as utilisé le code que tu nous as donné 'HOOK_MYHOOKFRED' => Module::hookExec('myhookfred'), // ... function hookMyhook($params){ Be t'as pas utilisé deux fois le meme nom de hook, il te faut: 'HOOK_MYHOOKFRED' => Module::hookExec('cleancarroussel'), // ... function hookCleancarroussel($params){ Et dans le tpl: $HOOK_MYHOOKFRED PS: J'ai lu le code que de 1.5.0.13... Faut peut-etre adapter un peu pour ta version, mais deja, fixe ca. Edited August 21, 2012 by Erikku (see edit history) 1 Link to comment Share on other sites More sharing options...
Frediteur Posted August 21, 2012 Share Posted August 21, 2012 merci...qq heures de voyage et je reprend le combat sur la plage Link to comment Share on other sites More sharing options...
Frediteur Posted August 26, 2012 Share Posted August 26, 2012 Bonjour, Malgré plusieurs tutos, je n'arrive toujours pas à créer le Hook qui permette d'afficher un slider en pleine page comme ici http://www.lejardinduplaisir.com/ SVP si quelq'un peut me guider pas à pas... je me sentirais mieux... J'ai opéré à ceci : 1. Exécutez cette requête dans votre base de données MySQL : INSERT INTO ps_hook ( 'name', 'title', 'description', 'position', 'live_edit') VALUES ( 'myhook', 'myhook', NULL, 1, 1); 98 cleancarroussel MyHookFred 1 0 2. dans le frontcontroler.php, j'ai modifié comme ceci )); self::$smarty->assign(array( 'HOOK_HEADER' => Module::hookExec('header'), 'HOOK_TOP' => Module::hookExec('top'), 'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn') 'HOOK_CLEANCARROUSSEL' => Module::hookExec('cleancarroussel'), 3. dans le PHP du module Caroussel, j'ai modifié comme ceci function install() { if ( !parent::install() OR !$this->registerHook('header') OR !$this->registerHook('footer') OR !$this->registerHook('cleancarroussel') OR !$this->registerHook('home') OR !$this->registerHook('top') OR !Configuration::updateValue('WHERE_TO_HOOK', 'home') OR !Configuration::updateValue('CLEAN_CAR_WIDTH', '556') OR !Configuration::updateValue('CLEAN_CAR_HEIGHT', '220') OR !Configuration::updateValue('CLEAN_CHANGE_SPEED', 4000) OR !Configuration::updateValue('SHARE_CAR', 1) ) return false; return true; RESULTAT PERMANENT Ce module ne peut être accroché à ce hook QUESTIONS : - doit on modifier aussi le fichier php du header ? le fichier tpl ? pour que le Hook s'installe juste en dessous des menus ? - doit on modifier le fichier TPL du module cleancarroussel ? - et est ce que le systeme de hook sera plus simple dans la version 1.5 ? mon site >>> www.seasexandsun.be Merci d'avance parce que là...je sue. Fred PS : Upgrade de la version 1.4.9 qui est sortie hier ? en tant que néo user de PS; j'hésite... merci aussi pour cette question. Link to comment Share on other sites More sharing options...
J. Danse Posted August 26, 2012 Share Posted August 26, 2012 Perso, je ne répondrais qu'à ceci: - et est ce que le systeme de hook sera plus simple dans la version 1.5 ? Oui. Très. Ils sont dynamiques (mais ce n'est pas l'objet). Le principe des hooks en 1.5, c'est ceci: On a plus besoin de requête SQL pour ajouter un hook ; Lorsque l'on accroche un module à un hook, le système rajoute le hook si celui n'existe pas ; Au niveau des TPL, plus besoin de modifier un fichier cœur pour ajouter une variable reprenant le résultat de l’exécution d'un hook ; Dans le TPL, on ajoute une variable smarty de ce genre: {hook h='myHook'} et le résultat est affiché là-même ; 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