Créér ou modifier un template mail dans prestashop
Besoin de particulariser un template mail pour un client ? Voici quelques points que nous avons notés :
le template txt et le template html
: PrestaShop permet d’envoyer en un seul mail deux versions : une en pur texte et une en HTML. Même si la version texte est relativement peu utilisée (uniquement pour les clients mail qui n’acceptent pas l’HTML), sachez que le fichier test_mail.txt est indispensable pour pouvoir utiliser le test_mail.html
ajout d’une image
: si on veut ajouter une image à un mail, on est obligé d’overrider la classe Mail. En effet, une seule image est prévur par défaut dans les templates de mail : le logo. Cette image est disponible comme toutes les autres variables dans le template du mail :
{shop_logo}. Si on veut ajouter d’autres images, il suffit de faire comme pour le logo et ajouter une variable à l’ensemble des variables disponibles. Pour ce qui est de l’override lui-même, cela fera l’objet d’un autre post. Il est à noter que si on utilise d’autres méthodes pour incorporer les images dans le template, on aura plus de clients mail qui n’afficheront pas les images par défaut, rendant l’expérience utilisateur moins agréable.
$template_vars['{shop_logo}'] = $message->attach(new Swift_Message_EmbeddedFile(new Swift_File($logo), null, ImageManager::getMimeTypeByExtension($logo)));
ajouter des variables
: pour ajouter une variable, il suffit d’ajouter une entrée dans un array de données qui est un des paramètres de la fonction Send de Mail. Dans le template du mail, il suffit d’insérer le nom de la clé de l’array entre accolades et PrestaShop
Pour terminer, voici une petite classe de test permettant d’envoyer un mail. Il suffit qu’il y ait deux fichiers (test_mail.txt et test_mail.html) dans le répertoire mails/fr de votre PrestaShop
<?php
require_once(dirname(__FILE__).'/config/config.inc.php');
require_once(dirname(__FILE__).'/init.php');
global $cookie;
$subject = 'Subject of the mail';
$donnees = array(
'{prenomdest}' => 'Sergei' ,
'{nomdest}' => 'Brin' ,
'{texte}' => 'Happy birthday' ,
'{code}' => 'sfdgsf45' ,
'{montant}' => 60 ,
'{validity}' => '13/10/2016' ,
'{texte}' => 'Happy day !!!!!' ,
'{signature}' => 'From me to you' ,
'{nom}' => 'Jobs' ,
'{prenom}' => 'Steve'
);
$destinataire = 'sergei.brin@gmail.com';
Mail::Send('1', 'test_mail', $subject , $donnees, $destinataire, NULL, NULL, NULL, NULL, NULL, 'mails/');
?>
En annexe, voici les deux templates utilisés pour cet exemple, le template HTML :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Vous avez reçu un cadeau !</title>
</head>
<body>
<table style="font-family:Verdana,sans-serif; font-size: 12px; color: #374953; width: 700px;">
<tbody><tr><td colspan=2><a title="{shop_name}" href="{shop_url}"><img style="border: none;" src="{shop_logo}" alt="{shop_name}" /></a></td></tr>
<tr><td width = 400>Cher Prénom</td><td width=20 rowspan=2></td></tr>
<tr><td><p style="color: #00aeef;font-weight: 800;">BIENVENUE !
<p>Vous avez reçu une carte cadeau !</td></tr></tbody></table>
<table style="font-family: Verdana,sans-serif; font-size: 12px; color: #374953; width: 700px;"><tbody><tr>
<td width=20></td>
<td style="background-color: #CEC8C8;" width=200>
<p style="color: #00aeef;font-weight: 800;">VOTRE CARTE CADEAU
<p>Pour:{prenomdest} {nomdest}
<p>Valeur:{montant}
<p>Code:{code}
<p>Validité:{validity} (un an)
<p>Offert par :{prenom} {nom}
</td><td width=200></td></tr></tbody></table>
<table style="font-family: Verdana,sans-serif; font-size: 12px; color: #374953; width: 700px;"><tbody><tr>
<td width=40> </td><td width=40></td>
<td width=540><p style="color: #00aeef;">{texte}</td>
<td width=40></td>
<td width=40> </td></tr>
<tr><td colspan=5><p style="text-align: right;color: #00aeef;padding-right:140px;">{signature}</td></tr>
<tr><td colspan=5><p style="color: #00aeef;font-weight: 800;">COMMENT PROFITER DE VOTRE CARTE CADEAU ?</td></tr></tbody></table>
<table style="font-family: Verdana,sans-serif; font-size: 12px; color: #374953; width: 700px;">
<tbody>
<tr height=10><td width=30><p style="margin: 0px;">1.</p></td>
<td><p style="margin: 0px;">Rendez-vous sur <a href="http://www.monsite.com">www.monsite.com</a> et munissez-vous du code ci-dessus.</td></tr>
<tr height=10><td width=30><p style="margin: 0px;">2.</p></td>
<td><p style="margin: 0px;">Achetez le produit désiré et insérez votre code à l’étape de paiement.</td></tr>
<tr height=10><td width=30><p style="margin: 0px;">3.</p></td>
<td><p style="margin: 0px;">Le montant de la carte sera directement déduit du total de votre commande.</td></tr><tr><td colspan=2><p style="margin: 0px;"> </td></tr></tbody></table>
<table style="background: #CEC8C8; font-family: Verdana,sans-serif; font-size: 12px; color: #374953; width: 700px;"><tbody>
<td colspan=2><p>Notre équipe reste à tout moment à votre disposition sur notre <b>site</b>, via notre <b>FAQ</b> ou tous les jours sur <b>Facebook</b> et <b>Twitter</b> pour vous aider dans la commande de votre photo. N’hésitez donc pas à prendre contact avec notre équipe ; nous serons ravis de vous aider !</td></tr>
<tr><td colspan=2 style="text-align: right;"><p>À bientôt, Toute l’équipe !</td></tr>
<tr style="height: 30px;"><td style="background:#00aeef;font-size: 10px; border-top: 1px solid #D9DADE;" align="center"></td></tr></tbody></table>
</body>
</html>
et le template TEXT :
Cher {prenom}
BIENVENUE
Vous avez reçu une carte cadeau !
VOTRE CARTE CADEAU
Pour:{prenomdest} {nomdest}
Valeur:{montant}
Code:{code}
Validité:{validity} (un an)
Offert par :{prenom} {nom}
{texte}
{signature}
COMMENT PROFITER DE VOTRE CARTE CADEAU ?
1.Rendez-vous sur www.monsite.com et munissez-vous du code ci-dessus.
2.Achetez le produit désiré et insérez votre code à l’étape de paiement.
3.Le montant de la carte sera directement déduit du total de votre commande.
Notre équipe reste à tout moment à votre disposition sur notre site, via notre FAQ ou tous les jours sur Facebook et Twitter pour vous aider dans la commande de votre photo. N’hésitez donc pas à prendre contact ; nous serons ravis de vous aider !
À bientôt, Toute l’équipe !