Kaudaj Posted January 13, 2021 Share Posted January 13, 2021 (edited) Bonsoir amis développeurs, Je développe actuellement un module pour PrestaShop 1.7.7.0 pour estimer une date de livraison en fonction des stocks des entrepôts. Mon but est actuellement d'afficher la date de livraison dans le mail de confirmation de commande. Ce que j'ai fais : J'ai créé les fichiers suivants dans mon module : Leurs contenus sont identiques à ceux d'origine, dans le dossier /mails à la racine, sauf que j'y ai rajouté : <tr> <td style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-size: 0px; padding: 10px 25px; padding-top: 0; word-break: break-word;" align="left"> <div style="font-family: Open sans, arial, sans-serif; font-size: 16px; line-height: 25px; text-align: left; color: #363a41;" align="left">{delivery_date}</div> </td> </tr> pour les fichiers html et : {delivery_date} pour les fichiers texte. Dans le fichier principal de mon module, j'ai souscris aux deux hooks suivants : public function hookActionEmailSendBefore($params) { if ($params['template'] === 'order_conf') { $params['templatePath'] = $this->local_path . 'mails/'; } return true; } public function hookActionGetExtraMailTemplateVars($params) { if ($params['template'] === 'order_conf') { $orderId = $params['template_vars']['{id_order}']; $queryBus = $this->getQueryBus(); $deliveryDate = $queryBus->handle( new GetDeliveryDateForOrder($orderId) ); if ($deliveryDate) { $params['extra_template_vars']['{delivery_date}'] = $this->render( '@Modules/kjpreparationdelays/views/templates/hook/deliverydate.html.twig', [ 'deliveryDate' => $deliveryDate, ] ); } else { $params['extra_template_vars']['{delivery_date}'] = ''; } } } Le premier pour utiliser mon template order_conf à la place de l'original, le deuxième pour ajouter la variable delivery_date qui contient seulement une balise span. Je teste donc en passant une commande et voici ce que j'obtiens : Le tableau des produits est cassé. J'ai essayé de retirer le html que j'ai ajouté mais cela ne change rien : c'est le fait de remplacer le template qui pose problème. Ma question : Est-ce la bonne solution pour remplacer un template de mail ? J'ai bien lu la documentation suivante : https://devdocs.prestashop.com/1.7/modules/concepts/mail-templates/extend-a-layout-from-module/ Mais cette méthode ne me convient pas car le contenu est ajouté à la fin du mail. Ce n'est pas pertinent pour ma date de livraison, qui doit se trouver dans les informations de livraison. Si ma méthode est la seule possible, sauriez-vous donc pourquoi le mail est-il cassé alors que les contenus du template est exactement le même que l'original order_conf ? Merci pour votre aide, Kaudaj. Edited January 14, 2021 by Kaudaj (see edit history) Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 14, 2021 Share Posted January 14, 2021 Salut, est ce que tu as essayé de vider les caches ? cdt Link to comment Share on other sites More sharing options...
Kaudaj Posted January 14, 2021 Author Share Posted January 14, 2021 Salut Alexandre ! Merci de prendre le temps de m'aider. Je crois que je l'avais déjà fait, mais dans le doute je viens de les vider. Pas de changements... 😥 Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 14, 2021 Share Posted January 14, 2021 (edited) ok tente de mettre tes templates dans un repertoire mails/fr mails/en à l'interieur de ton theme, on ne sait jamais Edited January 14, 2021 by Alexandre Carette (see edit history) 1 Link to comment Share on other sites More sharing options...
Kaudaj Posted January 14, 2021 Author Share Posted January 14, 2021 Bon alors, j'ai régénéré le template de mail, je l'ai remplacé là où tu as dis et j'ai rajouté ma delivery_date et... ça marche 😂 J'avais déjà essayé à cet endroit là, mais j'avais fait de la réindentation automatique, peut-être que ça joue... 🤷♂️ Merci beaucoup ! Bonne soirée. 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