jma Posted September 1, 2013 Share Posted September 1, 2013 Bonjour à tous, Je cherche à ajouter la civilité du client dans l'email de confirmation de commande qu'il recoit. Cependant après quelques recherches je ne vois pas du tout comment faire cela. Le fichier email de confirmation de commande doit s'appeler "order_conf.html" et doit être situé dans le répertoire /mails/ puis le sous repertoire /fr/ Merci par avance de votre aide précieuse. JMA Link to comment Share on other sites More sharing options...
jma Posted September 3, 2013 Author Share Posted September 3, 2013 pouvez vous me répondre ?? merci jma Link to comment Share on other sites More sharing options...
jma Posted September 4, 2013 Author Share Posted September 4, 2013 Bonjour à tous,Je cherche à ajouter la civilité du client dans l'email de confirmation de commande qu'il recoit.Cependant après quelques recherches je ne vois pas du tout comment faire cela.Le fichier email de confirmation de commande doit s'appeler "order_conf.html" et doit être situé dans le répertoire /mails/ puis le sous repertoire /fr/Merci par avance de votre aide précieuse.JMA Link to comment Share on other sites More sharing options...
indesign47 Posted September 4, 2013 Share Posted September 4, 2013 (edited) Bonjour Jma, L'ajout du titre de civilité (gender) dans l'email de confirmation d'une commande. PaymentModule.php (dossier classes) ligne 562 environ ajouter '{gender}' => ($this->context->customer->id_gender == 1 ? 'Mr' : ($this->context->customer->id_gender == 2 ? 'Mme' : ($this->context->customer->id_gender == 3 ? 'Mlle' : ''))), order_conf.html et order_conf.txt (dossier mails/fr) ligne 17 environ Modifier <td align="left">Bonjour <strong style="color: {color};">{firstname} {lastname}</strong>, merci d'avoir passé commande chez <strong>{shop_name}</strong> !</td> par <td align="left">Bonjour <strong style="color: {color};">{gender} {firstname} {lastname}</strong>, merci d'avoir passé commande chez <strong>{shop_name}</strong> !</td> Edited September 4, 2013 by indesign (see edit history) 2 Link to comment Share on other sites More sharing options...
jma Posted September 5, 2013 Author Share Posted September 5, 2013 super cela marche parfaitement Merci pour vos explications claires et professionnelles. JMA 1 Link to comment Share on other sites More sharing options...
indesign47 Posted September 5, 2013 Share Posted September 5, 2013 Merci pour le retour et pour le commentaire. Si le problème est réglé, mettre le post en [Résolu] Ça ferra plaisir aux modérateurs, et aux bénévoles qui lisent le()s post(s). Procédure à suivre : Edit le premier post > Use Full Editor et rajouter devant le titre [Résolu] Link to comment Share on other sites More sharing options...
Amorino Posted June 7, 2019 Share Posted June 7, 2019 Bonjour, Comment adapter cette solution à la version 1.7.x svp? Merci Link to comment Share on other sites More sharing options...
david_caribou Posted August 26, 2019 Share Posted August 26, 2019 Je sais pas si la question est toujours d'actualité. Civilité n'est pas un champ obligatoire. Mais si on souhaite l'ajouter dans les emails : je précise que je suis débutant en prestashop, je ne connait pas symphonie, les docs sont mal foutues, donc ma solution n'est peut être pas la meilleure, mais ça marche. - partout ou c'est nécessaire (sujet ou corps de mail) la ou on veut faire apparaître la civilité on ajoute par exemple {title} et dans \override\classes creerun fichier Mail.php, l'objectif sera de surcharger la methode send. class Mail extends MailCore { public static function send(tout un tas de parametres) { // code personalisé return parent::Send(tout un tas de parametres); } } // et pour le code personnalisé : //recuperer l'id du genre de l'utilisateur $title=""; $id_gender =(int) Context::getContext()->customer->id_gender; //donnera 0 si l'utilisateur n'a pas de civilité (si c'est pas obligatoire dans le formulaire) if ($id_gender!=0) { $title=Gender::getGenders((int) $idLang,$id_gender)->getResults(); // la liste des civilités par id, en fct de la langue foreach ($title as $key => $value) { if ($value->id_gender==$id_gender) { $title=$value->name; } } } /// ajouter la variable dans l'email $add=array('{title}'=>$title); if (is_array($templateVars)) { $templateVars=array_merge($templateVars, $add); } else { $templateVars=$add; } "tous un tas de paramètres" = Je n'ai volontairement pas indiqué lesquels car la class Mail peut évoluer d'une version a l'autre, vaut mieux faire un copier / coller des params de la methode send de la classe d'origine. Le code est volontairement prudent car un mauvais override de la classe mail peut faire beaucoup de dégâts en prod. donc vaut mieux prévoir tout les cas. (une erreur 500 sur la confirmation de commande, le mail part pas et pire pas de changement d'état de la commande dans le BO) Ensuite pour les cas ou le client n'a pas de civilité : personnellement dans mes emails j'ai des sujets du type Mr personom, phrase type. et donc j'écris ceci pour sécuriser mes sujets : (transforme Mr personom, phrase type => Phrase type) si pas de civilité. if ($id_gender!=0) { /// déja vu } else { if (stripos($subject, '{title}') !== FALSE) { $subject_news=str_replace("{title}","",$subject); $subject_news=explode(',', $subject_news); if (count($subject_news)>1) { array_shift($subject_news); $subject_news=implode(',', $subject_news); $subject_news=substr($subject_news,1); $subject_news = ucfirst($subject_news); $subject=$subject_news; } } } Link to comment Share on other sites More sharing options...
camiau Posted August 4, 2020 Share Posted August 4, 2020 (edited) @david_caribou Merci pour tons explication. Edited August 7, 2020 by camiau (see edit history) 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