Jump to content
jma

Comment afficher la civilité dans l'email de confirmation de commande

Recommended Posts

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

Share this post


Link to post
Share on other sites

pouvez vous me répondre ??

 

merci

 

jma

Share this post


Link to post
Share on other sites

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 

Share this post


Link to post
Share on other sites

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 by indesign (see edit history)
  • Like 2

Share this post


Link to post
Share on other sites

super cela marche parfaitement

Merci pour vos explications claires et professionnelles.

 

JMA

  • Like 1

Share this post


Link to post
Share on other sites

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]

Share this post


Link to post
Share on other sites

Bonjour,

Comment adapter cette solution à la version 1.7.x svp?

Merci ;)

Share this post


Link to post
Share on other sites

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;
       }
     }
}

 

 

 

 

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

×
×
  • Create New...

Important Information

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