Kolbek Posted January 23, 2012 Share Posted January 23, 2012 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 More sharing options...
cedricfontaine Posted January 23, 2012 Share Posted January 23, 2012 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 ? Link to comment Share on other sites More sharing options...
Broceliande Posted January 23, 2012 Share Posted January 23, 2012 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 More sharing options...
DevNet Posted January 24, 2012 Share Posted January 24, 2012 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 More sharing options...
ebuildy Posted February 11, 2012 Share Posted February 11, 2012 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 ! Et la partie configuration : 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 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