[email protected] Posted October 29, 2009 Share Posted October 29, 2009 Bonjour,J’ai développé un Store Locator, qui doit s’afficher dans la page centrale.Je voulais le faire sous forme d’un module, mais je n’ai pas trouvé de hook pour la page centrale.=> Je me suis calé sur la fonctionnalité “supplier” et j’ai fait pareil :J’ai donc la structure suivante :/storelocator.php/classes/StoreLocator.php/themes/prestashop/storelocator.tplExistait-il un moyen de faire tout cela sous la forme de module, bien regroupé dans un sous répertoire de /modules ?Parce que là, même si tout est bien rangé à sa place, c’est un peu dispersé.Merci d’avance. Link to comment Share on other sites More sharing options...
paulcool Posted October 29, 2009 Share Posted October 29, 2009 Bonjour, je saisi mal la question, que vous voulez integrer dans la page d'accueil, exactement? Link to comment Share on other sites More sharing options...
[email protected] Posted October 29, 2009 Author Share Posted October 29, 2009 J'ai créé une page, qui s'affiche en page centrale, mais pas sur la page d'accueil.c'est une page indépendante, qui permet de localiser un magasin proche de chez soi.Le problème est que j'aurais voulu que tout son code soit contenu dans un module, mais les modules étant rattachés aux hooks, ils peuvent juste s'afficher dans les colonnes de droite ou de gauche ou dans le header ou le footer, ou encore être rattachés à un événement.Je me demandais si, pour encapsuler mon code dans un module, je devais créer un hook spécialement pour son appel. Link to comment Share on other sites More sharing options...
blasto Posted October 29, 2009 Share Posted October 29, 2009 C'est vrai qu'il ya un hook pour la colonne de gauche, celle de droite mais il manque celle du centre .. Dommage ... Link to comment Share on other sites More sharing options...
Nommam Posted October 29, 2009 Share Posted October 29, 2009 si pour la home page; le hook centrale c'est le home par contre pour les autres page, il n'y a pas de hook central !mais tu peux crer des hook indefiniment, il faut juste les inclure a ton theme ....voir par ici y a des infos : http://www.prestashop.com/forums/viewthread/31817/#144461sinon qq'un avait fait un beau tuto, mais je trouve pas Link to comment Share on other sites More sharing options...
blasto Posted October 29, 2009 Share Posted October 29, 2009 Yes merci Là j'ai aussi trouvé quelque chose :http://www.prestashop.com/forums/viewthread/23715/ Link to comment Share on other sites More sharing options...
emraud Posted March 12, 2010 Share Posted March 12, 2010 Bonjour Blasto et [email protected],Avez vous réussi à intégrer ce module comme tdécris plus haut, si oui, puis-je en savoir plus ?Je cherche actuellement à faire une chose assez similaire avec le module geolocalisationFR et la table supplier.L'idée est de permettre à mes clients de localiser les points de retraits sur une carte dynamique Link to comment Share on other sites More sharing options...
emraud Posted March 13, 2010 Share Posted March 13, 2010 Bonsoir,Je reviens sur le Hook, 2 nuits de recherches, 1 site test planté, et la seule soluce trouvé est l'affichage dans un CMS de la carte.... Ch'suis loin du compte... Mon CMS tient la route, question ? Mais comment marche un Hook ?Est ce un point d'encrage... Link to comment Share on other sites More sharing options...
SotEW Posted March 14, 2010 Share Posted March 14, 2010 Bonjour.Alors Un hook est effectivement un point d'ancrage. Et il en existe pas pour la page centrale, tout simplement pasque la page centrale EST le .php contenu sur le site (sinon, toute la navigation se ferrait sur index.php, et ça serait quand même dommage pour la lisibilité et les fonctionnalités.)Maintenant, il est possible d'ajouter dans une page .php de contenu, un hook créé de toute pièce.Voici les 5 étapes permettant d'afficher "Hello World!" par exemple, sur la page supplier.php, puisqu'on parle d'elle.On va donc créer le hook hookHelloWorld et s'inscrire dessus pour générer de l'affichage.1 - Créer un hook au niveau de la base de données.Allez dans votre gestionnaire sql préféré, et allez dans la table ps_hook, et ajouter la ligne suivante manuellement: INSERT INTO `ps_hook` (`name`, `title`, `description`, `position`) VALUES ('helloWorld', 'Hello World', '', '1'); Vous pouvez bien entendu vous servir de votre interface utilisateur pour insérer cette ligne dans ps_hook.2 - Préciser à Smarty (le gestionnaire de template) qu'il y a du contenu à générer pour le hook helloWorld dans supplier.phpAllez dans supplier.php (ou le fichier.php de votre choix) et au debut du fichier, mais APRES les lignes suivantes surtout: include(dirname(__FILE__).'/config/config.inc.php'); include(dirname(__FILE__).'/init.php'); Ajoutez la commande qui dicte à smarty d'aller chercher les inscriptions des modules au hook helloWorld et de générer l'affichage résultant dans la variable HOOK_HELLOWORLD. Il s'agit de la commande suivante: $smarty->assign('HOOK_HELLOWORLD', Module::hookExec('helloWorld')); 3 - Définir où sera affiché le contenu généré du hook helloWorld.Ceci consiste à placer la variable HOOK_HELLOWORLD dans le fichier template de supplier.php, qui se trouve dans /themes/votretheme/supplier.tplfaites attention au conditions d'affichages inscrites dans le fichier, et placez, quelque part, ceci : {$HOOK_HELLOWORLD} 4 - Inscrire le module de votre choix au hook helloWorld:Allez chercher le fichier .php de votre module (geolocalisationFR dans votre cas) et localisez la fonction install()Insérez-y ceci: if (!$this->registerHook('helloWorld')) return false; Mettez ceci APRES la référence à parent::install, sinon l'installation sera un échec.5 - Enfin, votre module doit possédez la fonction hookHelloWorld($params) qui renvoi l'affichage.Dans mon cas, je me contenterais d'ajouter dans le module : function hookHelloWorld($params) { return 'Hello World!'; } Mais adaptez cette fonction à votre envie (vous pouvez même appeler une autre fonction hookNomDuHook) si elle existe dèjà, de la manière suivante : function hookHelloWorld($params) { return $this->hookNomDuHook($params); } Voila, j'espère avoir été clair et utile ^^Bon courage ! Link to comment Share on other sites More sharing options...
emraud Posted March 14, 2010 Share Posted March 14, 2010 Merci SotEW,Je test ce soir,A première lecture, je comprends mieux le plantage de mon site test... Nul part je n'avais utilisé le code $smarty.Donc, ceci explique celà.J'espère mettre mon site en Prod fin de semaine prochaine... Merci à tous les dev et leurs super contrib.SotEW, ton module pour installer des blocks est canon Link to comment Share on other sites More sharing options...
emraud Posted March 14, 2010 Share Posted March 14, 2010 Question subsidiaire,Si qqn a déjà modifier la page supplier en admin afin de pouvoir attribuer des adresses aux fournisseurs, je suis preneur.Je cherche à dupliquer la page Admin de manufacturer pour que supplier ait le même comportement...Est-ce le plus simple ? Ou devrais carrément créer une table ps_adress-supplier et l'alimenter via mon Admin modifier.Je m'explique : la table ps_adress à un champ id_supplier mais pas de requète en Admin. Le module statsgeolocalisationFR interroge cette table pour afficher les clients, mais je souhaite le transformer pour qu'il affiche les supplier. Lors de mon dernier test, malgrés le changement d'id, j'appelle id_suppiler au lieu de id_customer, j'ai constaté que c'était toutes les adresse de la base ps_adress qui s'affichaient et pas seulement les 3 id_supplier test que j'avais créé via Phpmyadmin.Faut-il prioriser une clé genre id_supplier pour n'afficher que les adress de cette table ou insérer une ligne genre exclure 1 et 2 (customer et manufacturer) pour ne garder que les 3...Merci pour vos conseils éclairés, j'espère poster ma soluce très prochainement car ce module pourrait en interressé plus d'un. 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