Jump to content

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.

Share this post


Link to post
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)

Share this post


Link to post
Share on other sites

Ouf, je me sens moins seul ...!

ils sont générés où ces liens ???

Share this post


Link to post
Share on other sites

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 by Fab20620 (see edit history)

Share this post


Link to post
Share on other sites

merci pour l'astuce, je vais regarder cela !

je posterai ici si je trouve qque chose.

Share this post


Link to post
Share on other sites

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é

Share this post


Link to post
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');

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

Arnaud, utilise le code que j'ai mis avec addjs, ça marche pour moi.

  • Like 1

Share this post


Link to post
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

Share this post


Link to post
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
        ));

Share this post


Link to post
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.

Share this post


Link to post
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....

Share this post


Link to post
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....

Share this post


Link to post
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)

Share this post


Link to post
Share on other sites

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...!)

Share this post


Link to post
Share on other sites

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...

Share this post


Link to post
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)

Share this post


Link to post
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 !

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More