DavidCKW Posted October 8, 2014 Share Posted October 8, 2014 Bonjour à toute la communauté, J'ai pas mal parcouru le forum et je n'ai pas trouvé de réponse à ce que je cherchais, donc je poste un sujet au cas où une âme charitable puisse m'aider.Mon besoin est assez simple en soi. Je veux que lorsqu'un client s'inscrive, je reçoive un e-mail de notification d'inscription. Ceci à pour but de changer le groupe de client manuellement pour le passer en pro si c'est le cas.Je pense que le bout de code à rajouter quelque part ne doit pas être trop compliqué, mais je ne sais pas où ni quel code rajouter.Je vous remercie d'avance pour votre aide.Je suis sous prestashop 1.6.0.9.Bien cordialement. David. Link to comment Share on other sites More sharing options...
hpar Posted October 9, 2014 Share Posted October 9, 2014 Bonjour, Il suffit de créer un petit module qui s'attache au bon hook. Ensuite utiliser la fonction Mail::Send() Link to comment Share on other sites More sharing options...
DavidCKW Posted October 9, 2014 Author Share Posted October 9, 2014 Salut hpar, Je te remercie pour ta réponse et pour l'intérêt porté à ma demande.Pourrais-tu être un peu plus précis stp ? Je connais bien le html mais pas trop le php. As-tu une procédure à me proposer ?Merci d'avance. Link to comment Share on other sites More sharing options...
hpar Posted October 9, 2014 Share Posted October 9, 2014 Il faut que ton bout de code qui envoie un email soit exécuté au bon moment. C'est le rôle des "hooks". Pour les utiliser il faut créer un module, indiquer une fonction qui va être invoquée à ce hook. (c'est le principe de l'observateur d'évènement). Il te faut donc : - lire la doc sur les modules et en créer un - trouver le hook qui va bien (= celui qui est appelé à la création d'un compte) - comprendre comment les emails sont générés dans prestashop. Pour ça, une recherche dans le code avec la fonction que je t'ai indiqué précédemment peut t'aider. (exemple : https://github.com/PrestaShop/PrestaShop/blob/1.6/controllers/front/AuthController.php#L703) Link to comment Share on other sites More sharing options...
DavidCKW Posted October 9, 2014 Author Share Posted October 9, 2014 Je te remercie pour ta réponse hpar.Je vais regarder, mais c'est pas gagné d'avance car mes compétences risquent de me limiter très rapidement.S'il y a d'autres propositions, je les regarderai volontiers. A bientôt. Link to comment Share on other sites More sharing options...
herve25 Posted October 11, 2014 Share Posted October 11, 2014 Bonjour, Le hook à utiliser est actionCustomerAccountAdd Il faut donc que tu créer un module qui se greffe sur ce hook. Tu pourra ensuite envoyer un email via un code du genre function hookActionCustomerAccountAdd($params) { //Récupération des informations du client ( objet Customer ) $customer = $params['newCustomer']; //Préparation des variables pour l'envoi de l'email ( rajouter ici ce que tu souhaites $emailsVars = array( 'customerName' => $customer->firstname.' '.$customer->lastname ); $id_lang = $this->context->language->id; //Envoi de l'email //Cette fonction par exemple va rechercher le template mail 'account' dans ton dossier de module Send($id_lang, 'account', 'sujet mail', $emailsVars, '[email protected]',null,null, null,null, null,dirname(__FILE__)); } Link to comment Share on other sites More sharing options...
DavidCKW Posted October 13, 2014 Author Share Posted October 13, 2014 Merci beaucoup herve25 pour ces précisions qui m'ont permis d'avancer.J'ai donc créé un module (première fois de ma vie que j'en crée un) que j'ai associé au hook actionCustomerAccountAdd.J'y ai intégré le code que tu m'a fourni avec quelques modifs de personnalisation et j'ai créé le dossier mails contenant le mail "account". Lorsque j'installe mon module l'installation se passe correctement.Par contre lorsque je vais en FO créer un compte, dès que je clique sur "s'inscrire" après avoir rentré mes coordonnées, j'arrive sur une page blanche.Je vous ai mis en PJ mon module. Voici ci-dessous le code php de mon module <?php class Envoimail extends Module { /* @var boolean error */ protected $error = false; public function __construct() { $this->name = 'envoimail'; $this->tab = 'Custom Module'; $this->version = '1.0'; $this->author = 'DavidCKW'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Envoimail'); $this->description = $this->l('Permet l envoi d un mail lors de la creation d un compte'); $this->confirmUninstall = $this->l('Are you sure you want to delete envoimail ?'); } public function install() { if (!parent::install() OR !$this->registerHook('actionCustomerAccountAdd')) return false; return true; } public function uninstall() { if (!parent::uninstall()) return false; return true; } public function getContent() { $this->_html = '<h2>'.$this->displayName.'</h2>'; $this->_displayForm(); return $this->_html; } private function _displayForm() { global $cookie; /* Language */ $defaultLanguage = (int)(Configuration::get('PS_LANG_DEFAULT')); $languages = Language::getLanguages(false); $divLangName = 'text¤title'; $this->_html .= ''; } public function hookActionCustomerAccountAdd($params) { $customer = $params['newCustomer']; $emailsVars = array( 'customerName' => $customer->firstname.' '.$customer->lastname ); $id_lang = $this->context->language->id; Send($id_lang, 'account', 'Nouveau compte', $emailsVars, '[email protected]',null,null, null,null, null,dirname(__FILE__)); } } ?> Merci de me dire si vous voyez ce qui ne va pas. Link to comment Share on other sites More sharing options...
DavidCKW Posted October 13, 2014 Author Share Posted October 13, 2014 je précise que j'ai corrigé le .com.com à la fin du php, là ou j'ai rentré une adresse mail, ça n'a rien changé. Link to comment Share on other sites More sharing options...
herve25 Posted October 13, 2014 Share Posted October 13, 2014 Bonjour, La structure du dossier mails de votre module est-t-elle bien sous la forme suivante - mails - fr -account.html -account.txt - en -account.html - account.txt - autres codes langues... Pour débuguer plus facilement votre module activez l'affichage des erreurs ;-) : http://doc.prestashop.com/pages/viewpage.action?pageId=26149133 1 Link to comment Share on other sites More sharing options...
DavidCKW Posted October 13, 2014 Author Share Posted October 13, 2014 Herve25, J'ai corrigé le dossier mails pour qu'il contienne account.html et account.txt dans toutes les langues.J'ai activé l'affichage des erreurs et j'ai obtenu l'erreur visible en pièce jointe. Une idée ? Merci. Link to comment Share on other sites More sharing options...
DavidCKW Posted October 13, 2014 Author Share Posted October 13, 2014 Et voici le module en PJ (j'avais oublié de le mettre dans un de mes précédents posts) envoimail.zip Link to comment Share on other sites More sharing options...
herve25 Posted October 13, 2014 Share Posted October 13, 2014 La fonction Send n'existe pas, il faut que tu appelle la fonction Mail::Send ( Je viens de voir que l'erreur était dans mon code initial :-p ) Link to comment Share on other sites More sharing options...
DavidCKW Posted October 14, 2014 Author Share Posted October 14, 2014 herve25, merci.Effectivement en remplaçant le nom de la fonction par Mail::Send, je n'ai plus eu la page blanche, mais je ne recevais toujours pas d'e-mail. J'ai alors recherché une fonction équivalente dans un autre module et en fait, il faut indiquer le dossier "mails". Ainsi le bon code pour la fonction est le suivant : Mail::Send($id_lang, 'account', 'Nouveau compte', $emailsVars, '[email protected]',null,null, null,null, null,dirname(__FILE__).'/mails/'); Je l'ai t'esté et cette fois-ci ça fonctionne. Je reçois bien le mail lorsque je crée un compte.Je suis ravi que ça fonctionne et encore merci.La cerise sur le gâteau serait que j'arrive à rendre administrable le destinataire de ces mails. C'est à dire que quand je clique sur configuration du module depuis le BO, je puisse change le mail de destination.Si quelqu'un à une idée, je suis preneur. Sinon, mon principal problème est quand même résolu. 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