Jump to content
Sign in to follow this  
Kolbek

Envoi de mail avec Template ?

Recommended Posts

Bonjour,

 

J'aimerais utiliser le fonction mail qui permet d'utiliser un template :

 

 

Mail::Send((int)Configuration::get('PS_LANG_DEFAULT'), ...., array(...)..., dirname(__FILE__).'/mails/');

 

J'arrive a l'utiliser en mettant dans mon template (html ou txt) mes variables sous la forme : {ma_var}.

 

Mais savez vous s'il est possible de faire une boucle dans le template sur une variable passée qui serait de type Array ?

 

Merci d'avance à tous et bonne fin d'après midi.

Share this post


Link to post
Share on other sites

As tu regardé comment Prestashop fait pour envoyer la confirmation de commande ? J'imagine qu'il y a une boucle sur la liste des articles ?

Share this post


Link to post
Share on other sites

Bonjour,

 

J'aimerais utiliser le fonction mail qui permet d'utiliser un template :

 

 

Mail::Send((int)Configuration::get('PS_LANG_DEFAULT'), ...., array(...)..., dirname(__FILE__).'/mails/');

 

J'arrive a l'utiliser en mettant dans mon template (html ou txt) mes variables sous la forme : {ma_var}.

 

Mais savez vous s'il est possible de faire une boucle dans le template sur une variable passée qui serait de type Array ?

 

Merci d'avance à tous et bonne fin d'après midi.

 

1) pour etre remplacées par leurs valeurs respectives , les variables du template doivent etre assignées dans un tableau et transmises lors de l'appel à la fonction mail .

Dans cette fonction ce tableau est le 4ème paramètre , cf :

public static function Send($id_lang, $template, $subject, $templateVars, $to, $toName = NULL, $from = NULL, $fromName = NULL, $fileAttachment = NULL, $modeSMTP = NULL, $templatePath = _PS_MAIL_DIR_, $die = false)

 

2) il n'est pas possible de boucler dans le template de mail , non , ni même effectuer quelque opération que ce soit : seules les variables, si connues , sont remplacées par leurs valeurs respectives.

Share this post


Link to post
Share on other sites

Bonjour,

 

Il suffit simplement de spécifier le contenu final html / txt directement dans la variable avant de la passer en template_var.

 

Dans votre exemple {ma_var} contient tout simplement un éventuel tableau html déjà garnis au préalable en boucle php.

 

$ma_var = '<table>'."\n";
for(i=0;i<10;i++) {
$ma_var = '<tr>'."\n";
$ma_var = '<td>'.$i.'</td>'."\n";
$ma_var = '</tr>'."\n";
}
$ma_var = '</table>'."\n";

 

Ensuite, il vous suffit d'assigner $ma_var à une template_var pour son remplacement de le template du mail.

 

Bien cordialement

Share this post


Link to post
Share on other sites

C'est dommage que Prestashop ne permet pas l'utilisation des templates Smarty dans les eMails ! DevNet a raison, bien que ça paraisse lourd ...

 

En revanche les emails supportent les variables via la notation {NAME}, qui n'a rien à voir avec Smarty mais avec le plugin Decorator de SwiftMailer, l'outil utilisé pour envoyer les eMails.

 

Si vous voulez vraiment une bonne solution pour les eMails, regardez ce module proposé par notre partenaire Prestadget : http://www.prestadget.com/fr/modules-prestashop/21-header-footer-pour-tous-vos-emails.html

 

Il permet d'avoir un template central pour tous les eMails qui inclut le contenu du mail à envoyer, comme ça vous avez toujours le même haut et pied de mails sans changer tous les templates à chaque fois !

 

templating.png

 

Et la partie configuration :

 

maileditor1.jpg

 

Désolé pour la publicité ;-) en espérant que Prestashop rajoute les templates pour les emails dans la prochaine version !

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
Sign in to follow this  

×
×
  • Create New...

Important Information

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