Jump to content

Ajout de liens vers des pages CMS dans les modèles d'email HTML


Recommended Posts

Bonjour,

 

Je suis en train de modifier le pied de page de chaque modèle d'email en y ajoutant des liens vers quelques pages CMS (par exemple livraison ou paiement).

 

Je modifie (par exemple) le fichier /www/mails/fr/bankwire.html et y ajoute les lignes suivantes dans le footer:

<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
   <span>
      <a href="{shop_url}" style="color:#337ff1">Site principal</a>
      -
      <a href="{shop_url}content/5-paiement-securise" style="color:#337ff1">Paiement</a>
      -
      <a href="{$link->getCMSLink('1', 'livraison')}" style="color:#337ff1">Livraison</a>
   </span>
</td> 

Ligne 5: le lien codé en dur dans le template. Cela fonctionne bien mais ce n'est à mon avis pas la meilleure technique à utiliser.

 

Ligne 7: selon moi la meilleure méthode mais ceci ne semble pas fonctionner, le lien généré dans le mail envoyé est vide (pas de href):

<a style="color:#337ff1">Livraison</a>

Une idée? Dois-je en conclure qu'il est impossible d'utiliser la méthode getCMSLink au sein d'un template d'email html ou ai-je fait une erreur quelque part?

 

 

Note: J'utilise la version 1.6.1.4 de PrestaShop.

 

 

D'avance, merci pour votre aide!

Edited by greenmouseconcept (see edit history)
Link to comment
Share on other sites

Votre erreur: vous utilisez la syntaxe Smarty, or le contenu des mails est géré par Swift.

Pour y ajouter des champs personnalisés, vous pouvez le faire:

  • Avant les appels à Mail::Send() par extension de la variable passée en 4e argument (par ex. /classes/PaymentModule.php, ligne 778, variable $data construite à la ligne 705)
  • Dans Mail::Send() elle-même par extension de l'argument $template_vars
  • Par le hook actionGetExtraMailTemplateVars (déclenché dans /classes/Mail.php ligne 344)

La syntaxe dans votre cas serait

'{delivery_url}' => $link->getCMSLink('1', 'livraison'),

puis insertion de {delivery_url} dans le template

 
Link to comment
Share on other sites

J'ai essayé la 3e technique que vous décriviez (actionGetExtraMailTemplateVars) mais cela ne voulait malheureusement pas fonctionner alors en cherchant un peu j'ai trouvé la solution suivante:

 

 

- Après la ligne 341 dans Mail.php, ajouter la ligne de code qui suit (donc en dehors de la fonction actionGetExtraMailTemplateVars):

$template_vars['{paymentLink}'] = Context::getContext()->link->getCMSLink('1', 'livraison');

Ensuite la variable {paymentLink} est bien utilisable dans n'importe quel modèle de mail.

 

 

A noter que sans votre aide je n'aurais jamais pu trouver cette solution, encore merci!

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