shinobi80 Posted May 5, 2017 Share Posted May 5, 2017 Hello, Je viens de faire une mise à jour de presta 1.4 vers 1.6 et j'ai réussi à résoudre à peu près tous les petits bug excepté 1 à savoir que j'avais un module spécifique pour l'affichage du menu dans le header et depuis la mise à jour impossible de l'afficher. Le hook existe bien dans le back office mais au niveau du front j'ai l'erreur suivante Undefined index: HOOK_MENUTOP monsite.com/tools/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code on line 206 Quelqu'un peut-il me dire ce qui cloche ? Link to comment Share on other sites More sharing options...
doekia Posted May 5, 2017 Share Posted May 5, 2017 Partant d'une migration 1.4, il y a de fortes chances que nombre de hook manquent dans ta 1.6. L'effet kisscool est que cela fait des entrées avec id_hook=0 qui plantent la mise en oeuvre d'un thème mais avec message visible seulement si tu es en debug. Je pencherai pour ce genre de cafouillage Link to comment Share on other sites More sharing options...
shinobi80 Posted May 5, 2017 Author Share Posted May 5, 2017 et la solution ça serait quoi selon toi ? Link to comment Share on other sites More sharing options...
Eolia Posted May 5, 2017 Share Posted May 5, 2017 Surtout que ce hook devait être écrit et défini en dur dans le frontcontroller à mon avis... Link to comment Share on other sites More sharing options...
shinobi80 Posted May 5, 2017 Author Share Posted May 5, 2017 le hook est bien écrit dans le front controller self::$smarty->assign(array( 'HOOK_HEADER' => Module::hookExec('header'), 'HOOK_TOP' => Module::hookExec('top'), 'HOOK_BANNER' => Module::hookExec('banner'), 'HOOK_MENUTOP' => Module::hookExec('menutop'), 'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn') Quelqu'un a une idée de ce qui ne va pas et de la solution à apporter pour que le hook menutop puisse s'afficher en front ? Link to comment Share on other sites More sharing options...
J. Danse Posted May 6, 2017 Share Posted May 6, 2017 Bonjour, Si vous avez effectué une mise à jour, vérifiez les paramètres avancés (Performances) de votre boutique. L'option "Désactiver les surcharges" est sans nuls doutes placés à "Oui". Ce qui a pour effet de ne pas avoir cette variable traitée au sein de votre boutique et donc non existante. Puisque vous faites une mise à jour, je vous conseillerais par ailleurs vivement de modifier la pratique utilisée: ne pas déclarer HOOK_MENUTOP au sein d'une surcharge de FrontController mais utiliser {hook h='menutop'} en lieu et place de {$HOOK_MENUTOP} dans votre template, uniquement. 1 Link to comment Share on other sites More sharing options...
Eolia Posted May 6, 2017 Share Posted May 6, 2017 Bah dans une 1.6 ce n'est pas Module::hookExec() déjà... if (!$this->useMobileTheme()) { // These hooks aren't used for the mobile theme. // Needed hooks are called in the tpl files. $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)) : ''), )); } else { $this->context->smarty->assign('HOOK_MOBILE_HEADER', Hook::exec('displayMobileHeader')); } Link to comment Share on other sites More sharing options...
doekia Posted May 6, 2017 Share Posted May 6, 2017 @j.danse Depuis quand les hooks sont traités en override ? Link to comment Share on other sites More sharing options...
J. Danse Posted May 6, 2017 Share Posted May 6, 2017 Depuis que son hook est instancié dans une variable dans une surcharge. Tout simplement. Link to comment Share on other sites More sharing options...
shinobi80 Posted May 6, 2017 Author Share Posted May 6, 2017 "Désactivé les surchages" j'ai donc mis sur NON et voici le warning Warning à la ligne 1829 du fichier monsite.com/classes/controller/AdminController.php [2] Cannot modify header information - headers already sent by (output started at monsite.com/override/classes/Tools.php:154) Après plus d'accès au front avec les erreurs suivantes : Strict Standards: Declaration of Tools::getMetaTags() should be compatible with ToolsCore::getMetaTags($id_lang, $page_name, $title = '') in /override/classes/Tools.php on line 154Warning: Cannot modify header information - headers already sent by (output started at /override/classes/Tools.php:154) in classes/shop/Shop.php on line 428Warning: Cannot modify header information - headers already sent by (output started at /override/classes/Tools.php:154) in /classes/shop/Shop.php on line 429 Une idée ??? Link to comment Share on other sites More sharing options...
J. Danse Posted May 6, 2017 Share Posted May 6, 2017 Comme vous venez d'une version 1.4 fortement surchargée (à première vue) ; vous allez devoir faire quelques changements dans ces fameuses surcharges (et voir si elles sont toujours utiles). Dans le cas présent, vous avez une première erreur qui résulte du fait que votre méthode getMetaTags() dans la classe Tools ne possède pas la même signature que la classe originelle, désormais mise à jour (et qui serait dès lors getMetaTags($id_lang, $page_name, $title = ''). Link to comment Share on other sites More sharing options...
doekia Posted May 6, 2017 Share Posted May 6, 2017 Ouais mais bon, je n'ai jamais vu un prestashop sain fonctionner mieux en désactivant les overrides Ni que ça concerne les hooks... Peut-on juste vérifier qu'il n'existe aucune entrée dans la table ps_hook_module avec id_hook= 0 pour avancer sérieusement ? Link to comment Share on other sites More sharing options...
J. Danse Posted May 6, 2017 Share Posted May 6, 2017 C'est un cas classique d'école, tu sais. D'autant dès lors qu'il à réalise une mise à jour via le module One Click. Ce module se charge d'activer cette option. Précédemment, il nous a indiqué que son PrestaShop retourne une erreur Smarty sur une variable non trouvée. Que cette variable est instanciée via la classe FrontController. Tu ne peux en déduire, sérieusement, qu'une seule et unique chose. Et ça concerne donc bien les hooks dès que ceux-ci sont appellés dans une variable non pré-existante afin de pouvoir l'utiliser au sein d'un template. D'autant sur une version 1.4, la méthodologie de l'appel de {hook} n'étant pas possible pour ces versions. Link to comment Share on other sites More sharing options...
shinobi80 Posted May 6, 2017 Author Share Posted May 6, 2017 je viens de vérifier la table ps_hook_module et aucune entrée id_hook= 0 1 Link to comment Share on other sites More sharing options...
shinobi80 Posted May 9, 2017 Author Share Posted May 9, 2017 J'ai modifié l'appel de hook dans le template en utilisant ceci : {hook h=menuTop} et désormais je n'ai plus aucun message d'erreur mais le fameux module (menu) que j'essaie de greffer sur ce menuTop n'apparait toujours pas en front, j'ai bien réinitialisé le module en BO mais rien à faire. 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