Jump to content

Module [Alertes email] - Fonctionnement


Recommended Posts

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

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

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 by Frénésie (see edit history)
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...