flofly Posted October 24, 2012 Share Posted October 24, 2012 Bonsoir, j'ai des besoins de créer un module tout simple pour de l'affichage html dans un premier temps (j'aimerais intégrer de l'upload d'image par la suite mais ce n'est pas essentiel). Je n'arrive pas à "joindre" le css au module, je me suis basé sur un canvas de module pour PS 1.5 trouvé ici : http://www.prestashop.com/forums/topic/188181-doc-canvas-de-module/ Comment faire dans PS 1.5 pour créer des modules simples, et de manière propre ? De plus, je souhaiterais greffer le module panier sur un hook que je voudrais créer, mais j'ai l'impression que l'ancienne m"thode ne fonctionne plus... Des avis sur la question ? J'ai vraiment du mal a trouver des docs fiables pour PS 1.5... je suis un peu perdu sur les méthodes pour la création de modules et leurs implémentations... En vous remerciant par avance ! Link to comment Share on other sites More sharing options...
J. Danse Posted October 24, 2012 Share Posted October 24, 2012 Pour ce qui est d'ajouter du CSS, cela se passe dans le hook "displayHeader" via ce bout de code exemple: $this->context->controller->addCSS(($this->_path).'views/css/moncss.css', 'all'); Link to comment Share on other sites More sharing options...
flofly Posted October 25, 2012 Author Share Posted October 25, 2012 (edited) Pour ce qui est d'ajouter du CSS, cela se passe dans le hook "displayHeader" via ce bout de code exemple: $this->context->controller->addCSS(($this->_path).'views/css/moncss.css', 'all'); Ok merci, ça fonctionne, je m'y était mal pris au début... Par contre tu me dis HookDisplayHeader mais ce n'est pas forcément dans ce hook ? En l'occurrence je l'ai mis dans HookDisplayHome, totu dépend d'où est greffé le module, non ? Et pour la création de hook, y-a-t-il une manipulation particulière ? Edited October 25, 2012 by flofly (see edit history) Link to comment Share on other sites More sharing options...
J. Danse Posted October 25, 2012 Share Posted October 25, 2012 En réalité, il est tout à fait possible de le mettre dans n'importe quel hook (display, pas d'actions). Cependant, il est vivement conseillé/recommandé/(obligatoire) de le mettre dans le hook displayHeader pour la simple et bonne raison qu'ainsi, le CSS sera placé comme il a lieu d'être: dans la balise <head></head> ; à contrario, il sera placé n'importe où dans la balise <body></body>. La création de hooks ? C'est à dire avoir un hook qui n'est pas encore répertorié ? Link to comment Share on other sites More sharing options...
flofly Posted October 25, 2012 Author Share Posted October 25, 2012 Dans le fichier php de mon module j'ai donc intégré le css de cette façon : public function hookDisplayHeader($params) { $this->context->controller->addCSS(($this->_path).'views/css/mon_module.css', 'all'); } Cependant il n'est pas pris en compte contrairement à cela ou je l'ai mis dans le DisplayHome : public function hookDisplayHome($params) { global $smarty; $this->context->controller->addCSS(($this->_path).'views/css/mon_module.css', 'all'); return $this->display(__FILE__, 'views/templates/front/mon_module.tpl'); } Pourquoi ? est-ce une manière parmis tant d'autre ? Est-ce une façon de le faire proprement ? Concernant la création d'un hook, pour faire simple j'ai une div top_header et une div header et je souhaiterai greffer le panier dans le top_header. J'imagine pouvoir créer un hook top_header par exemple afin d'y greffer le panier, je me trompe ? En fait, j'essaye vraiment de comprendre le fonctionnement de Prestashop, mais plus j'avance plus j'ai l'impression de ne rien comprendre.... Link to comment Share on other sites More sharing options...
coeos.pro Posted October 25, 2012 Share Posted October 25, 2012 ton module est greffé sur ce hook ? Link to comment Share on other sites More sharing options...
flofly Posted October 26, 2012 Author Share Posted October 26, 2012 ton module est greffé sur ce hook ? Maintenant que tu le demandes, effectivement il faut que je le déclare dans le php du module... et que je le greffe sur le bon hook. Sur ce point c'est ok, merci a tous les deux. Link to comment Share on other sites More sharing options...
flofly Posted October 26, 2012 Author Share Posted October 26, 2012 Pour revenir sur la création de hook; j'ai réussi à créer un hook topheader en l'insérant dans la base, puis j'ai modifié le userinfo.php avant public function install() { return (parent::install() AND $this->registerHook('top') AND $this->registerHook('header')); } ............ ............ ............ public function hookTop($params) { if (!$this->active) return; $this->smarty->assign(arr......... Après public function install() { return (parent::install() AND $this->registerHook('topheader') AND $this->registerHook('header')); } ............ ............ ............ public function hookTopheader($params) { if (!$this->active) return; $this->smarty->assign(arr......... Mais j'ai toujours une erreur qui s'affiche : Notice: Undefined index: HOOK_TOPHEADER in W:\wamp\sites\mon_site\cache\smarty\compile\17a7c74755b3bc9303630648e47f449ea863e669.file.header.tpl.php on line 153 Je n'arrive pas à voir d'où cela peut provenir... une idée ? Link to comment Share on other sites More sharing options...
f@b Posted October 26, 2012 Share Posted October 26, 2012 (edited) a priori tu as un HOOK_TOPHEADER qui n'est pas un hook natif, prestashop ne le connait pas! il te faut l'ajouter dans la bdd et surcharger le front controller un petit article : http://blog.lahaut.info/2011/05/rajouter-un-nouveau-hook-dans-prestashop-1-4-grace-a-loverride/ Edited October 26, 2012 by f@b (see edit history) Link to comment Share on other sites More sharing options...
flofly Posted October 27, 2012 Author Share Posted October 27, 2012 Ok merci cela fonctionne j'ai du rajouter également la partie suivante pour que cela fonctionne dans la surcharge du frontcontroller : public function initContent() { ............... } Petite question : J'ai vu dans le frontcontroller plusieurs fois ces commentaires : // This method will be removed in 1.6 ou /** * @deprecated 1.5.0 */ public function displayHeader($display = true) { A quoi cela correspond ? Les fonctions sont dépréciées pour la version 1.5 ? Link to comment Share on other sites More sharing options...
coeos.pro Posted October 27, 2012 Share Posted October 27, 2012 A quoi cela correspond ? Les fonctions sont dépréciées pour la version 1.5 ? oui elles étaient utilisées pour les versions précédentes mais pour la 1.5 il faut éviter de les utiliser. Link to comment Share on other sites More sharing options...
flofly Posted October 27, 2012 Author Share Posted October 27, 2012 Du coup, comment faire pour ajouter un hook sans utiliser ces fonctions ? Y-a-t-il une meilleure façon ? Link to comment Share on other sites More sharing options...
Prestaspirit Posted November 9, 2012 Share Posted November 9, 2012 Salut, Comme l'explique J.Danse dans sont article paru chez phpsolution l'ajout de hook est désormais automatique, il suffit de faire : $this->registerHook('tonHook') pour que celui-ci soit créé dans la base de données, ensuite comme avant il faut créer une méthode hookTonHook() dans la classe principale de ton module, de là tu peut faire tout les traitement que tu veut comme avant. Niveau tpl il faut ajouter le code suivant {hook h='tonHook'} ou si tu souhaite assigner ce hook qu'à ton module tu peut aussi faire comme ça : {hook h='tonHook' mod='tonModule'} Link to comment Share on other sites More sharing options...
NewTechno Posted March 19, 2013 Share Posted March 19, 2013 Merci pour les explications 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