Jump to content

template par carrier


Recommended Posts

Bonjour à tous, j'écris pour la première fois sur le forum bien que j'ai l'habitude d'y trouver de nombreuses solutions.
Mais là je bloque carrément donc j'aimerais vraiment que l'on puisse me donner un coup de main.
Je m'explique : 
Je crée un Carrier Module qui doit ajouter disons DEUX carrier et qui doit permettre de choisir l'heure de la livraison pour chacun d'eux.    

MAIS pour chacun, les horaires proposés sont différents

 

Pour l'instant j'ai créé mes deux carrier dans mon module, 

et j'ai greffé le module sur mon nouveau hook   $this->registerHook('monNewHook') ;  

Ce hook est appelé dans order-template.tpl    {hook h='monNewHook'}      en rajouter un <td> dans le carrier déjà présent.

 

Ensuite, dans la fonction hookMonNewHook($params) j'ai aussi réussi à afficher un template (contenu dans le module) qui va afficher un select.
Le probleme c'est que je n'arrive pas à faire en sorte d'envoyer par la fonction hookMonNewHook une variable qui serait propre à chaque Carrier. Par exemple, j'aimerais pouvoir récupérer dans le template :

- pour le carrier 1 => les horaires 1

- pour le carrier 2 => les horaires 2

 

Le probleme c'est que mon template donne bien entendu (et cela semble logique) le même résultat pour chacun des deux templates

Je n'ai donc aucune idée de la manière donc je peux m'y prendre pour faire passer au template la variable que je souhaite au moment ou je souhaite vu que la fonction hookMonNewHook   revient à afficher le même template et à faire les même traitements pour chaque Carrier.

 

Si quelqu'un pouvait m'aider j'en serais grandement reconnaissant !

 

Merci d'avance

Link to comment
Share on other sites

En fait il me semble que je me suis mal expliqué

J'ai trouvé une solution à mon problème qui consistait simplement à ajouter dans les propriétés du module la propriété   public $id_carrier

Et lors de l'installation, cela instancie automatiquement cette valeur par la valeur de l'id du carrier

Ainsi, lors de l'appel à la fonction de hook, je peux faire un traitement selon l'id du carrier

Je ne sais pas si c'est la meilleure facon de procéder, mais pour le moment c'est la seule que j'ai trouvé

Si quelqu'un a une autre idée, merci de m'en faire partager 

Link to comment
Share on other sites

Ok donc dans mon cas on a trouvé une solution

Par contre j'avoue ne pas être certain de pouvoir me débrouiller comme ca à chaque fois.

Et aussi, j'ai essayé votre methode dans la fonction getOrderShippingCost, cela n'a pas fonctionné (ca me renvoie 0 à chaque fois)

D'ailleurs chose singulière, la fonction getOrderShippingCost semble s'appeler 4 fois par transporteur. Est-ce normal ? 

Link to comment
Share on other sites

Non en fait pour tester un peu mon code, j'ai mis dans la fonction getOrderShippingCost de mon module  un var_dump afin de tester si j'arrive bien à recevoir mon id_carrier comme souhaité.
Et le résultat s'affiche 4 fois d'affilé pour chaque transporteur. Si j'enlève le var_dump on n'y voit rien bien sur (il n'y a alors qu'un return dans cette fonction qui transmet le prix au transporteur)

Ca m'a paru bizarre mais est-ce un comportement de prestashop en général ?

Link to comment
Share on other sites

Non justement c'est bien ce que je pense

Il doit y avoir une logique dans prestashop qui fait que ces fonctions (getOrderShippingCost  et celle Extra) sont appelées plusieurs fois

J'ai déjà lu un post en anglais concernant cette question, mais qui était restée sans réponse.
Pour l'instant je me contente de cela merci de votre aide ;)  :rolleyes:  :rolleyes:

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