arnotw Posted June 21, 2017 Share Posted June 21, 2017 Bonjour à tous,tout nouveau sur prestashop, je suis confronté à un soucis avec le module Mondial Relay.Je tourne sur presta 1.7 et la dernière version du module Mondial RelayMondial Relay est bien proposé mais le choix du relais n'apparait pas.En regardant un peu le code source, je me suis aperçu que les Javascript du module MR n'etaient pas chargés car leur chemin est faux... En effet, la boutique est dans un repertoire "presta", les JS sont appelés ainsi (avec 2 fois "presta" dans le chemin) : <script type="text/javascript" src="https://ndd.com/presta/presta/modules/mondialrelay/views/js/common.js" ></script> <script type="text/javascript" src="https://ndd.com/presta/presta/modules/mondialrelay/views/js/jquery.plugin.mondialrelay.parcelshoppicker.2.0.0.js" ></script> <script type="text/javascript" src="https://ndd.com/presta/presta/modules/mondialrelay/views/js/mondialrelay_widget.js" ></script> Ma question est : comment changer les chemins des JS ? j'ai tenté en éditant les fichiers .tpl présents dans le dossier "views" du module Mondial Relay + desactiver le cache ... en vain... merci d'avance pour votre aide. Link to comment Share on other sites More sharing options...
Fab20620 Posted June 21, 2017 Share Posted June 21, 2017 (edited) Je viens de constater exactement la même chose sur une boutique qui a un problème d'affichage des relais. je cherche dans le code, je pense qu'il y a un souci dans la déclaration de l'url qui double le chemin quand l'installation n'est pas à la racine. Edited June 21, 2017 by Fab20620 (see edit history) Link to comment Share on other sites More sharing options...
arnotw Posted June 21, 2017 Author Share Posted June 21, 2017 Ouf, je me sens moins seul ...! ils sont générés où ces liens ??? Link to comment Share on other sites More sharing options...
Fab20620 Posted June 21, 2017 Share Posted June 21, 2017 (edited) décidément j'édite non stop aujourd'hui, car j'avais répondu de façon inexacte.Les liens semblent être générés dans mondialrelay.php au sein de la fonction "public function hookHeader($params)" Edited June 21, 2017 by Fab20620 (see edit history) Link to comment Share on other sites More sharing options...
arnotw Posted June 21, 2017 Author Share Posted June 21, 2017 merci pour l'astuce, je vais regarder cela ! je posterai ici si je trouve qque chose. Link to comment Share on other sites More sharing options...
BeComWeb Posted June 21, 2017 Share Posted June 21, 2017 Bonsoir, Dans la 1.7 les appels de fichiers JS se font via la méthode $this->context->controller->registerJavascript() C'est probablement là que le chemin est erroné Link to comment Share on other sites More sharing options...
Fab20620 Posted June 21, 2017 Share Posted June 21, 2017 j'ai modifié l'appel en utilisant une variable pour récupérer le chemin puis addjs au lieu de registerjavascript et maintenant ça marche. j'ai laissé les lignes de code "originales" en les commentant, ça te permet de voir où j'ai placé le code. en mode widget : $module_uri = _MODULE_DIR_.$this->name; $this->context->controller->addJS($module_uri.'/views/js/common.js'); $this->context->controller->addJS($module_uri.'/views/js/jquery.plugin.mondialrelay.parcelshoppicker.2.0.0.js'); $this->context->controller->addJS($module_uri.'/views/js/mondialrelay_widget.js'); //$this->context->controller->registerJavascript('module-'.$this->name.'-common', $this->_path.'views/js/common.js'); //$this->context->controller->registerJavascript('module-'.$this->name.'-jqueryshoppicker', $this->_path.'views/js/jquery.plugin.mondialrelay.parcelshoppicker.2.0.0.js'); //$this->context->controller->registerJavascript('module-'.$this->name.'-mondialrelaywidget', $this->_path.'views/js/mondialrelay_widget.js'); Link to comment Share on other sites More sharing options...
BeComWeb Posted June 21, 2017 Share Posted June 21, 2017 La méthode registerJavascript() remplace la méthode addJS() mais ils ont gardé une rétrocompatibilité. Donc au final c'est plutôt $this->_path qui devait poser problème. On peut supposer que si tu gardes la nouvelle méthode mais que tu remplaces les $this->_path par ton $module_uri ça devrait fonctionner. Je suspecte que tu dois avoir un sous-répertoire presta, lui même dans un répertoire presta sur ton hébergement. Perso pour 2 de mes modules j'ai utilisé ça et ça fonctionne très bien $this->context->controller->registerJavascript('modules-mymodule-front', 'modules/' . $this->name . '/views/js/mymodule.js', array( 'position' => 'bottom', 'priority' => 150 )); 2 Link to comment Share on other sites More sharing options...
arnotw Posted June 22, 2017 Author Share Posted June 22, 2017 Bonjour, j'ai donc testé avec $module_uri = _MODULE_DIR_.$this->name; que j'ai dû transformer en $module_uri = _MODULE_DIR_.$this->name.'/'; car dans mon cas cela manquait. (cela faisait : presta/modules/mondialrelayviews/) Mais problème inchangé ! toujours le /presta/presta/ dans l'appel de mes JS. J'ai remarqué que si le chemin $module_uri n'etait pas bon, la ligne JS n'est pas générée... Puisque l'on indique à priori le bon chemin à la fonction, pourquoi le rendu final me double le repertoire ? Ca peut être dû au cache prestashop ? @BeComWeb : non /presta/ n'est pas dans un repertoire /presta/ uniquement un /presta/ à la racine du site et tout se passe dedans. Désolé, newbee sur presta, je ne me suis pas encore frotté au code et n'ai pas encore une vue d'ensemble de la bête...! merci pour votre aide Arnaud Link to comment Share on other sites More sharing options...
Fab20620 Posted June 22, 2017 Share Posted June 22, 2017 Arnaud, utilise le code que j'ai mis avec addjs, ça marche pour moi. 1 Link to comment Share on other sites More sharing options...
arnotw Posted June 22, 2017 Author Share Posted June 22, 2017 Merci Fab20620, effectivement ca fonctionne avec addJs(), j'ai accès à mes points relais. Désolé, j'etais parti pour essayer de comprendre pourquoi cela ne fonctionne pas avec registerJavascript()... j'aurai peut être l'occasion de revenir sur cette fonction, je ne suis qu'au début de mon periple ! Merci encore à vous. Efficace et rapide. arnaud Link to comment Share on other sites More sharing options...
BeComWeb Posted June 22, 2017 Share Posted June 22, 2017 Désolé, j'etais parti pour essayer de comprendre pourquoi cela ne fonctionne pas avec registerJavascript()... As-tu essayé le code que je t'ai donné ? $this->context->controller->registerJavascript('modules-mymodule-front', 'modules/' . $this->name . '/views/js/mymodule.js', array( 'position' => 'bottom', 'priority' => 150 )); Link to comment Share on other sites More sharing options...
Fab20620 Posted June 22, 2017 Share Posted June 22, 2017 Perso je ne peux pas tester, la boutique n'est pas la mienne et j'ai juste essayé d'aider un e-commerçant qui n'arrivait pas à faire marcher ce module. Maintenant que ça marche, je ne peux pas couper le service sur sa boutique. Mais même en écrivant le chemin en dur avec registerjavascript il prend le chemin avec le double répertoire... on dirait qu'il ne tient pas compte de l'indication de chemin donnée à droite. Link to comment Share on other sites More sharing options...
arnotw Posted June 22, 2017 Author Share Posted June 22, 2017 Mais même en écrivant le chemin en dur avec registerjavascript il prend le chemin avec le double répertoire... on dirait qu'il ne tient pas compte de l'indication de chemin donnée à droite. Eh oui, j'avais commencé par là et même constat As-tu essayé le code que je t'ai donné ? Oui idem : presta/presta/ addJs(), marche bien, mais ca m'ennuie un peu de patcher avec des fonctions quasi-depreciées.... Link to comment Share on other sites More sharing options...
Fab20620 Posted June 22, 2017 Share Posted June 22, 2017 addJs(), marche bien, mais ca m'ennuie un peu de patcher avec des fonctions quasi-depreciées.... Of course ce n'est qu'une solution temporaire. la personne que j'ai aidé a envoyé des infos à mondial relay, je suppose qu'ils vont modifier le module pour qu'il marche.... Link to comment Share on other sites More sharing options...
BeComWeb Posted June 22, 2017 Share Posted June 22, 2017 (edited) ... je suppose qu'ils vont modifier le module pour qu'il marche.... Oui c'est pour ça que ce serait bien que vous précisiez la version du module que vous utilisez. Admettons qu'un autre utilisateur du forum tombe sur ce topic dans 3 mois et qu'il ait un problème avec le module Mondial Relay, et que ce problème ait une autre cause. Il va se lancer dans du bidouillage de code pour rien.... Edited June 22, 2017 by BeComWeb (see edit history) Link to comment Share on other sites More sharing options...
arnotw Posted June 22, 2017 Author Share Posted June 22, 2017 Oui bien vu, donc : version Mondial Relay : 2.1.8 avec une prestashop 1.7.1.1 et powered by php7.1.6 (mais bon ça, on s'en fout un peu plus...!) Link to comment Share on other sites More sharing options...
BeComWeb Posted June 22, 2017 Share Posted June 22, 2017 Ah ouais... la dernière version date d'avril. Si le bug est avéré ils ne sont pas pressés de le résoudre... Link to comment Share on other sites More sharing options...
Fab20620 Posted June 22, 2017 Share Posted June 22, 2017 (edited) Oui versions à jour (prestashop 1.7, php 7.1, mondial relay V2.1.8) sur la boutique que j'ai traitée également... Mais je pense que ce problème ne survient que sur les installations où la boutique n'est pas installée à la racine, mais dans un répertoire. Pour la boutique où j'ai eu le problème il y avait aussi un répertoire d'installation style : http://ndd-boutique.com/fr/ Edited June 22, 2017 by Fab20620 (see edit history) Link to comment Share on other sites More sharing options...
arnotw Posted June 22, 2017 Author Share Posted June 22, 2017 Oui versions à jour (prestashop 1.7, php 7.1, mondial relay V2.1.8) sur la boutique que j'ai traitée également... Mais je pense que ce problème ne survient que sur les installations où la boutique n'est pas installée à la racine, mais dans un répertoire. Pour la boutique où j'ai eu le problème il y avait aussi un répertoire d'installation style : http://ndd-boutique.com/fr/ Oui je pense aussi, sinon, il y aurait eu une remontée du bug bien avant ! Link to comment Share on other sites More sharing options...
polaije Posted February 24, 2020 Share Posted February 24, 2020 Bonjour, Je me permet de revenir sur le sujet de MR où les points relais n'apparaissent pas. Je suis un concepteur d'applications mais malheureusement pas dans le monde PHP mais Dotnet. J'essaie depuis des semaines de résoudre le même problème de points relais qui n'apparaissent pas mais je crois que mon problème est différent puisque j'ai trouvé un workaround en demandant aux clients de rafraichir la page. Je voudrais éviter cette manœuvre car nous avons beaucoup d'accès en mobiles et ce stratagème est beaucoup plus difficile à effectuer dans ce mode. Le site est en version 1.7.6.3 et le module MR est en 2.3.4. Le thème est une version qui n'a pas évolué depuis son utilisation et c'est probablement là que le bas blesse. Le site : https://pharmanovea.com Si quelqu'un a une idée je suis preneur. Merci d'avance, Jean-Marie 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