Jump to content

chemin JS module Mondial Relay


Recommended Posts

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 Relay
Mondial 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

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 by Fab20620 (see edit history)
Link to comment
Share on other sites

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

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
        ));
  • Like 2
Link to comment
Share on other sites

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

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

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

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

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

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

... 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 by BeComWeb (see edit history)
Link to comment
Share on other sites

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 by Fab20620 (see edit history)
Link to comment
Share on other sites

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

  • 2 years later...

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...