Jump to content

[Résolu] Créer une variable dans l'email d'inscription


Recommended Posts

Bonjour,

 

Je souhaiterais mettre en place un email de confirmation d'inscription différent pour les professionnels et les particulier, en fait, il faudrait ajouter quelques lignes pour les professionnels les informant qu'ils peuvent bénéficier de tarifs préférentiels avec un code de réduction.

Il me faudrait donc deux modèle d'email de confirmation d'inscription, un pour les professionnel et l'autre pour les particuliers.

 

Pour résumer, je voudrais donc créer une variable lors de l'inscription d'un client du type :

- si le client a renseigner le champ *société* alors envoyer email inscription pro

- sinon envoyer email inscription simple

 

Je n'ai pas réussi à trouver de sujet similaire sur le forum et je n'ai pas trouvé de module non plus.

 

Ma question est donc:

Est-il possible d'automatiser l'envoi d'email d'inscription différent selon les renseignements transmis lors de l'inscription ? Et si oui, par quel moyen y parvenir ?

 

Je vous remercie par avance ^_^

Edited by Vectorus (see edit history)
Link to comment
Share on other sites

Actuellement je tourne sous PrestaShop 1.4.6.2, mais je pense faire une mise à jour prochainement (si j'ai pas trop de problème) avant de mettre ça en place.

Je me qualifierai plus de bidouilleur que de développeur mais ça me fait pas peur de toucher au code :)

Link to comment
Share on other sites

Ok pour la version, au passage je te déconseille la mise à jour 1.4 > 1.5 sans pro habitué si tu ne veux pas t'arracher les cheveux et avoir de mauvaises surprises :P

 

Aller je tente un petit tuto rapide comme ça me vient.

 

-------

 

Préparation du terrain :

 

- Dupliquer "account.html" et "account.txt" en "account_pro.html" et "account_pro.txt" dans l'ensemble des dossiers /mail/<lang>

- Changer légèrement le contenu des nouveaux fichiers pour faire les tests avant de faire ton template définitif.

 

Préparation du controller :

 

- Dans override/controllers, faire l'override du AuthController (http://doc.prestasho...rge+et+override) et de sa méthode preProcess()

 

- Localiser :

 

if (!$customer->is_guest)

{

if (!Mail::Send((int)self::$cookie->id_lang, 'account', Mail::l('Welcome!', (int)self::$cookie->id_lang),

array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname))

$this->errors[] = Tools::displayError('Cannot send email');

}

 

Transformer en :

 

if (!$customer->is_guest)

{

if(Tools::getValue('company') !== false){

if (!Mail::Send((int)self::$cookie->id_lang, 'account_pro', Mail::l('Welcome!', (int)self::$cookie->id_lang), array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname))

$this->errors[] = Tools::displayError('Cannot send email');

}

else{

if (!Mail::Send((int)self::$cookie->id_lang, 'account', Mail::l('Welcome!', (int)self::$cookie->id_lang), array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname))

$this->errors[] = Tools::displayError('Cannot send email');

}

 

}

 

- Tester une inscription avec la société remplie et sans la société remplie pour voir le mail reçu.

Edited by Whoami (see edit history)
Link to comment
Share on other sites

Super, merci beaucoup c'est parfait :D

Je vais pas pouvoir mettre ça en place dans l’immédiat, je vais mettre résolu au titre quand même, si j'ai un problème lors de la mise en place je reviendrai et je viendrai vous tenir informer quoi qu'il en soit.

 

Pour la mise à jour c'est dommage, c'est vraiment si compliqué ? J'avais justement conseillé à l'entreprise ou je travail de faire la mise à jour vers la 1.5 qui propose des options intéressantes.

Edited by Vectorus (see edit history)
Link to comment
Share on other sites

Pas de problème pour le retour, j'éditerai au besoin.

 

 

Personnellement, je n'ai pas encore tenté la mise à jour 1.4.9/1.4.10 > 1.5.x à cause de la sur-customisation & complexité des boutiques sur lesquelles je travaille, je me fie simplement aux nombreux retours qui règnent sur le forum 1.5.

 

 

Ce ne sont pas des cas génériques et je pense que certains ont réussi la mise à jour sans aucun problème, mais elle me semble trop aléatoire pour la faire sans aucun risque... Je la tenterai sur une installation vierge un de ces jours tiens :)

 

Plus la customisation est grande, même si elle est propre et dans les normes Prestashop, plus ce risque est grand (ajouter à cela les modules tiers incompatibles si tu en as, des templates personnalisés à éventuellement revoir, etc).

 

A toi de voir si tu veux la tenter, ce n'est que mon avis, mais prends tes précautions pour parer à un tout soucis (par exemple fait en une avant sur un clone de ta boutique en environnement de dev par exemple)...

 

Malgré tout, la 1.5 apporte de nombreuses fonctionnalités comme tu le dis et vaut le détour :)

  • Like 1
Link to comment
Share on other sites

D'accord, merci beaucoup pour tout ces conseils.

 

Je vais prendre toutes les précautions possible pour limiter les risques lors de la mise à jour, la boutique n'est pas beaucoup customisée pour le moment et elle a peu de modules, avec un peu de chance ça ce déroulera sans accroc mais je ferai d'abord l'essai sur une copie ^_^

 

Et si jamais ça ne veut pas fonctionner, je resterai en 1.4.

 

Encore merci.

Link to comment
Share on other sites

  • 8 months later...

Bonjour à tous,
 
je suis en PS 1.5.6.0[/size] et j'ai tenté de suivre ce tuto pour envoyer un mail différent en fonction du pays.
 
Mais malgré mes nombreux test je reçois toujour le mail account (même en remplaçant account par account Guyane pour les deux résultat du "if") :

 

J'ai posé les accountguyane html et txt dans :

 

boutique.com/themes/Themename/mails/fr

 

J'ai édité le fichier suivant: 

boutique.com/controllers/front/AuthController.php avec :

 

if (!$customer->is_guest)
{
if ($address->id_country == Country::getByIso('GA'){
if (!Mail::Send((int)self::$cookie->id_lang, 'accountguyane', Mail::l('Welcome!', (int)self::$cookie->id_lang), array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname))
$this->errors[] = Tools::displayError('Cannot send email');
}
else{
if (!Mail::Send((int)self::$cookie->id_lang, 'account', Mail::l('Welcome!', (int)self::$cookie->id_lang), array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname))
$this->errors[] = Tools::displayError('Cannot send email');
}
 
}
 
Please help me!  je ne peut pas ouvrir ma boutique en direction de la Guyane en raison de ces petits soucis ;(
Link to comment
Share on other sites

Solution  avec le code fonctionnel à remplacer dans les dernières ligne du fichier  boutique.com/controllers/front/AuthController.php, les text en bleu peut servir de repère:

 

/**

* sendConfirmationMail

* @param Customer $customer

* @return bool

*/

protected function sendConfirmationMail(Customer $customer)

{

if (!Configuration::get('PS_CUSTOMER_CREATION_EMAIL'))

return true;

if ($AddressClient->id_country == '241')

return Mail::Send(

$this->context->language->id,

'accountguyane',

Mail::l('Welcome!'),

array(

'{firstname}' => $customer->firstname,

'{lastname}' => $customer->lastname,

'{email}' => $customer->email,

'{passwd}' => Tools::getValue('passwd')),

$customer->email,

$customer->firstname.' '.$customer->lastname

);

else 

return Mail::Send(

$this->context->language->id,

'account',

Mail::l('Welcome!'),

array(

'{firstname}' => $customer->firstname,

'{lastname}' => $customer->lastname,

'{email}' => $customer->email,

'{passwd}' => Tools::getValue('passwd')),

$customer->email,

$customer->firstname.' '.$customer->lastname

);

}

}

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