Jump to content

Modification module "mailalert" pour image et url produit


Recommended Posts

Bonjour à tous !

*** post concernant la version 1.4.3 ***

j'ai modifié le module mailalerts (mailalerts.php) pour obtenir dans le mail l'URL du produit et celle de l'image.

Plus exactement j'ai modifié la fonction hookUpdateQuantity dans mailalerts.php :

 

public function hookUpdateQuantity($params)
{
 global $cookie, $link;
[color=#ff0000] /* Récupération URL produit & URL image */
 $product = new Product((int)(Tools::getValue('id_product')), false, (int)($cookie->id_lang));
 $productLink = $link->getProductLink($product);
 $img_link = Product::getCover((int)(Tools::getValue('id_product')));
 if($img_link>0){$img_link = $link->getImageLink($product->link_rewrite, $img_link[id_image], 'large');};[/color]
 if (is_object($params['product']))
  $params['product'] = get_object_vars($params['product']);
 if (is_array($params['product']['name']))
 {
  $params['product']['name'] = $params['product']['name'][(int)Configuration::get('PS_LANG_DEFAULT')];
 }
 if (isset($params['product']['id_product']))
  $params['product']['id'] = (int)$params['product']['id_product'];
 $qty = (int)$params['product']['quantity'];
 if ($qty <= (int)(Configuration::get('MA_LAST_QTIES')) AND !(!$this->_merchant_oos OR empty($this->_merchant_mails)) AND Configuration::get('PS_STOCK_MANAGEMENT'))
 {
  $templateVars = array(
[color=#ff0000] /* Réstitution URL produit & URL image pour le mail */
'{product_link}' => htmlspecialchars($productLink),
'{image_link}' => $img_link,[/color]
'{qty}' => $qty,
'{reference}' => strval($params['product']['reference']),
'{last_qty}' => (int)(Configuration::get('MA_LAST_QTIES')),
'{product}' => strval($params['product']['name']).(isset($params['product']['attributes_small']) ? ' '.$params['product']['attributes_small'] : ''));
  $id_lang = (is_object($cookie) AND isset($cookie->id_lang)) ? (int)$cookie->id_lang : (int)Configuration::get('PS_LANG_DEFAULT');
  $iso = Language::getIsoById((int)$id_lang);
  if (file_exists(dirname(__FILE__).'/mails/'.$iso.'/productoutofstock.txt') AND file_exists(dirname(__FILE__).'/mails/'.$iso.'/productoutofstock.html'))
Mail::Send((int)Configuration::get('PS_LANG_DEFAULT'), 'productoutofstock', Mail::l('Product out of stock'), $templateVars, explode(self::__MA_MAIL_DELIMITOR__, $this->_merchant_mails), NULL, strval(Configuration::get('PS_SHOP_EMAIL')), strval(Configuration::get('PS_SHOP_NAME')), NULL, NULL, dirname(__FILE__).'/mails/');
 }
 if ($this->_customer_qty AND $params['product']['quantity'] > 0)
  $this->sendCustomerAlert((int)$params['product']['id'], 0);
}

 

 

 

Résultat :

- quand je met à jour la quantité d'un produit dans mon back office, je reçois bien le mail avec l'url produit et image... tout est OK !

 

- par contre quand un client passe commande et que le produit est sous la quantité déclenchant l'alerte, je reçois le mail mais avec une URL produit du style "http://www.la-boutique-indienne.com/0-.html" .....

 

 

Pourtant j'ai l'impression que la fonction hookNewOrder et hookUpdateQuantity envoie bien le même mail soit le mail envoyé par hookUpdateQuantity ....

 

comprends pas du tout du tout .... depuis qq mois ...

Link to comment
Share on other sites

  • 6 months later...

Je tente en vain d'ajouter le lien vers le produit et l'image de ce dernier dans le mail de rupture de stock.

Rien n'y fait (pour l'instant ! hihi).

 

En passant j'ai mis un lien sur la référence du produit, donc qui pointe vers le-dit produit, dans le mail de confirmation de la commande de mailalerts. Si ca t'intéresse .....

 

A+

Link to comment
Share on other sites

Bonjour,

Pour ajouter un lien cliquable vers les produits dans le mail de confirmation de la commande, il faut ajouter dans le fichier mailalerts.php :

- dans la fonction

public function hookNewOrder($params)

chercher le foreach

foreach ($params['cart']->getProducts() AS $key => $product)

et ajouter  global $link;

        foreach ($params['cart']->getProducts() AS $key => $product)
        {
            global $link;

Puis dans le même foreach, trouver

$itemsTable .=

et changer

<td style="padding:0.6em 0.4em;">'.$product['reference'].'</td>

en

<td style="padding:0.6em 0.4em;"><a style="font-weight: bold; color: #000000;" href="'.$link->getProductLink($product['id_product'], $product['link_rewrite'], $product['id_category_default']).'">'.$product['reference'].'</a></td>

On peut faire exactement de la même manière pour la confirmation de la commande envoyée au marchand, mais cette fois c'est dans le fichier classes/PaymentModule.php, dans la fonction function validateOrder et la variable $productsList .

 

Ainsi dans les mails, on peut cliquer sur la référence du produit et cela renvoie vers le produit sur la boutique en ligne.

 

Tester 100% sur ps 1.2.5, reste valable pour les autres versions.

Edited by caromax (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...