Jump to content

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.

Link to comment
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.

Link to comment
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

Link to comment
Share on other sites

  • 3 weeks later...

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 !

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