chantane Posted June 1, 2009 Share Posted June 1, 2009 Bonjour,J'ai lu le tutoriel, concernant la création de nouveaux modules, mais je ne comprends pas dans quel hook sera placé un module, dans le cas ou l'on définit plusieurs fonctions hook. Si je prend l'exemple du module blocksearch.php, il possède les fonctions :- hookLeftColumn- hookRightColumn- hookTopDans le BO, je ne trouve pas comment affecter ce module dans le hook de mon choix, il est toujours dans top.dans différents modules, on trouve plusieurs fonctions hook, mais comment configurer le hook du module via le BO. J'ai désinstallé et réinstallé les modules, je n'ai pas vu de choix. Comment mettre le module blocksearch, dans rightCcolumn ? peut-on le faire par le BO ? Link to comment Share on other sites More sharing options...
chantane Posted June 1, 2009 Author Share Posted June 1, 2009 J'ai perdu quelques heures à chercher la solution avant de trouver dans le code .php : //return $this->registerHook('leftColumn'); //return $this->registerHook('rightColumn'); return $this->registerHook('top'); Link to comment Share on other sites More sharing options...
SotEW Posted June 2, 2009 Share Posted June 2, 2009 Sinon, dans le backoffice, tu as dans l'onglet "Modules" le sous-menu "positions" qui te permet de greffer un module dans un hook. Link to comment Share on other sites More sharing options...
chantane Posted June 2, 2009 Author Share Posted June 2, 2009 oui, mercieffectivement, en fait dans le cas de blocksearh, il fallait décommenter les lignes correspondantes aux hook, pour les voir apparaitre dans le sous menu position. ce que je n'avais pas vu. Link to comment Share on other sites More sharing options...
Patric Posted June 2, 2009 Share Posted June 2, 2009 Et donc ? C'est [Résolu] ? Link to comment Share on other sites More sharing options...
chantane Posted June 2, 2009 Author Share Posted June 2, 2009 pas tout à fait résolu, Link to comment Share on other sites More sharing options...
Patric Posted June 2, 2009 Share Posted June 2, 2009 Il fallait modifier le titre du topic en éditant ton premier post. ;-) Link to comment Share on other sites More sharing options...
chantane Posted June 2, 2009 Author Share Posted June 2, 2009 pas tout à fait résolu,Lorsque je met mon module dans racine_prestashop/modules, il apparait automatiquement dans le BO,mais si je le met dans /racine_prestashop/themes/mon_theme/modules, il n'est pas affiché bar le BO, et je ne peux pas l'installerEst-ce que ce fonctionnement est prévu ?En regardant le code de module::display, je vois que le module est recherché d'abord dans le répertoire theme/modules, et ensuite dans le repertoire modules directement sous la racine. Link to comment Share on other sites More sharing options...
Patric Posted June 2, 2009 Share Posted June 2, 2009 Oui, normalement c'est prévu. Ca permet de stocker les thèmes modifiés des modules dans les répertoires des thèmes perso. Link to comment Share on other sites More sharing options...
SotEW Posted June 2, 2009 Share Posted June 2, 2009 En regardant le code de module::display, je vois que le module est recherché d’abord dans le répertoire theme/modules, et ensuite dans le répertoire modules directement sous la racine. Effectivement, comme le dis Zendik, c'est le fichier du THEME qui est cherché en priorité dans /racine_prestashop/themes/mon_theme/modules/nomdumodule/. Ceci permet de personnaliser l'aspect des modules en fonction du thème de la boutique. Il n'y auras donc dans ce dossier que des fichiers .tplPour donner un peu plus de précision sur le fonctionnent des hook avec les modules, il faut juste remarquer qu'un module s'inscrit automatiquement lors de son installation dans les hooks (ce qui correspond aux lignes citées dans le second poste de reinette), et ces positions peuvent être ensuite modifiés via l'outils position.Pour ce qui est de l'affichage dans le frontoffice, smarty va regarder lorsqu'il rencontre un hook ({HOOK_TOP}, par exemple) quels sont les modules inscrit sur ce hook, puis va appeler la fonction hookNomDuHook (hookTop dans l'exemple) SI ELLE EST PRESENTE, pour chacun de ces modules.C'est pourquoi il est impossible d'afficher certains blocs dans certains hooks, sans ajouter ces fonctions dans le code du bloc, mais qu'il est possible d'afficher le blocksearch dans les colonnes de gauche et/ou droite. Link to comment Share on other sites More sharing options...
chantane Posted June 2, 2009 Author Share Posted June 2, 2009 En mettant, mon module dans racine/themes/mon theme/modules/mon module je devrais le voir apparaitre automatiquement dans la liste blocks des modules à installer du back office, est-ce bien ce qui devrait se passer ?puisque dans la fonction _construct(), j'ai la ligne $this->tab = 'Blocks'; et s'il n'y est pas c'est que j'ai une erreur quelque part ? car tant qu'il n'apparait pas je ne peux pas l'installer et faire exécuter la fonction install. Pour l'instant, il n'apparait pas alors qu'il fonctionnait en étant dans le dossier racine/modules. Link to comment Share on other sites More sharing options...
chantane Posted June 2, 2009 Author Share Posted June 2, 2009 C'est normal que ma solution ne marche pas.Je souhaitais mettre mes modules personnels entiers dans le dossier /themes, mais cela ne fonctionne pas ainsi.On ne peut pas y mettre le fichier .php, apparemment ce fichier doit obligatoirement se trouver dan le dossier racine/modules. (voir la fonction module::getInstanceByName)Ce qui m'oblige éventuellement à scinder mon dossier, et à mélanger mes fichiers et ceux de la distribution.Existe-il une solution pour avoir toutes les modifications dans un seul dossier à part genre pluggin ?Est-ce prévu dans la 1.2? Link to comment Share on other sites More sharing options...
SotEW Posted June 2, 2009 Share Posted June 2, 2009 et bien, dans le dossier du module contenu dans /themes/ton theme/, il est normal de n'avoir que les TPL. Comme tu l'as signalé dans le message précédent, la liste des modules est générée en regardant les dossiers contenu dans /modules/.C'est uniquement dans l'affichage du site que le créateur d'un template peu ecraser le .tpl contenu dans /modules/lemodule/ en en plaçant un du même nom dans /themes/letheme/modules/lemodule/.Il convient donc, si tu souhaites créer un module et le proposer, de mettre les fichiers .tpl dans /modules/tonmodule/, afin de laisser aux créateurs de templates (et aux utilisateurs) la possibilité "d'écraser" ce fichier .tpl pour leurs personnalisations.Inutile donc de t'embêter à créer deux dossiers, prestashop va chercher les .tpl en priorité dans /themes/lethemecourant/modules/lemodule, mais prendra celui contenu à coté du .php correspondant s'il n'est pas présent dans le theme. Link to comment Share on other sites More sharing options...
Patric Posted June 2, 2009 Share Posted June 2, 2009 Reinette, le module dont tu parles, c'est bien le module blocksearch d'origine de PS ?HS : SotEW, mais qu'est-ce qui te rend si joyeux ? ;-P Link to comment Share on other sites More sharing options...
SotEW Posted June 2, 2009 Share Posted June 2, 2009 Mais la perspective de vous voir au BarCamp, mon très cher Link to comment Share on other sites More sharing options...
chantane Posted June 3, 2009 Author Share Posted June 3, 2009 J'ai pris ce module en exemple, et pour comprendre son fonctionnement, pour pouvoir mettre au point mon module, une barre de navigation toute simple, et facile à configurer. En particulier le positionnement dans un hook me posait problème, c'est résolu.Je pense qu'il serait intéressant de pouvoir rassembler toutes les modifications qui ne font pas partie de la distribution PS dans un seul dossier, plutôt que de les mettre dans le dossier modules, juste pour des raisons pratiques. 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