Frénésie Posted June 12, 2014 Share Posted June 12, 2014 Bonjour à tous ! Depuis quelque temps j'ai des soucis avec le module d'alertes email, les clients ne reçoivent plus de notifications lorsqu'un produit en rupture de stock est de nouveau disponible. J'utilise la version 1.5.6.1 de Prestashop et la version 3.3 du module. J'ai donc décortiqué le fonctionnement du module, lu le code et je suis tombé sur une ligne qui me bloque, dans le fichier mon_site\modules\mailalerts\MailAlert.php à la ligne 223 : Hook::exec('actionModuleMailAlertSendCustomer', array('product' => (is_array($product->name) ? $product->name[$id_lang] : $product->name), 'link' => $product_link, 'customer' => $customer, 'product_obj' => $product)); Je n'arrive pas à trouver où se situe l'action 'actionModuleMailAlertSendCustomer' et donc ce qui fait que l'envoie de mails ne marche pas. Auriez-vous un petit coup de pouce ? Cordialement, Link to comment Share on other sites More sharing options...
codeurWeb Posted June 12, 2014 Share Posted June 12, 2014 En effet, c'est assez étrange. C'est forcement un ajout récent car le nom du hook est standardisé selon la version >= 1.5 mais ce hook n'est créé à aucun moment car il n'y a pas de méthode d'installation ni de fichier d'upgrade qui aurait pu ajouter ce hook pour l'utiliser. Ceci dit, le code qui envoi le mail est exécuté avant le Hook::exec(), donc, si le exec() ne fait pas d'erreur, les mails devraient être envoyés. Si le Hook::exec() fait une erreur, vous pouvez essayer d'ajouter le hook "actionModuleMailAlertSendCustomer" dans la table ps_hook. Cependant, ce hook semble ne jamais être appelé puisqu'il n'y a pas de fonction correspondante et que son nom est incohérent pour une utilisation en "Hook dynamique". Je pense donc que vous pouvez mettre le hook::exec() en commentaire... Link to comment Share on other sites More sharing options...
Frénésie Posted June 12, 2014 Author Share Posted June 12, 2014 (edited) Effectivement cela rejoins ma supposition, je vais donc continuer d'investiguer sur l'envoie de mail qui est juste au dessus.Merci ! EDIT : Je viens de trouver la source de mon problème, dans le fichier mon_site\modules\mailalerts\MailAlert.php à la ligne 206, j'ai remplacé le 11 paramètre : Mail::Send( $id_lang, 'customer_qty', Mail::l('Product available', $id_lang), $templateVars, strval($customer_email), NULL, strval(Configuration::get('PS_SHOP_EMAIL', null, null, $id_shop)), strval(Configuration::get('PS_SHOP_NAME', null, null, $id_shop)), NULL, NULL, dirname(__DIR__).'/mails/', false, $id_shop ); dirname(__DIR__).'/mails/' par dirname(__FILE__).'/' EDIT 2 : De plus j'ai du rajouter des valeurs dans le tableau $templateVars pour que le template HTML du mail contienne bien toutes les variables. Dans le même fichier ligne 208 : $templateVars = array( '{product_name}' => (is_array($product->name) ? $product->name[$id_lang] : $product->name), '{product_link}' => $product_link, '{firstname}' => $customer_firstname, '{lastname}' => $customer_lastname, '{product_price}' => round($product->price, 2) ); J'ai rajouté les valeurs {firstname}, {lastname}, {product_price} et changé {product} en {product_name} Je trouve quand même cela étrange que je doive modifier le module d'Alertes Mail à ce point là pour qu'il fonctionne. J'ai pourtant désinstallé/réinstallé + réinitialisé le module. Edited June 13, 2014 by Frénésie (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