l'indien Posted August 22, 2013 Share Posted August 22, 2013 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 More sharing options...
l'indien Posted August 23, 2013 Author Share Posted August 23, 2013 personne pour me donner un bout de code qui doit tenir en une ligne ? tous les développeurs sont en vacance ? Link to comment Share on other sites More sharing options...
caromax Posted March 11, 2014 Share Posted March 11, 2014 (edited) Bonjour, @ l'indien, As-tu trouvé une solution a ton problème ? Salutations Edited March 11, 2014 by caromax (see edit history) Link to comment Share on other sites More sharing options...
l'indien Posted March 11, 2014 Author Share Posted March 11, 2014 (edited) Toujours rien non ! Mais il faut que je me repenche sur le problème ... Edited March 11, 2014 by l'indien (see edit history) Link to comment Share on other sites More sharing options...
caromax Posted March 11, 2014 Share Posted March 11, 2014 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 More sharing options...
l'indien Posted March 12, 2014 Author Share Posted March 12, 2014 Merci Caromax ! Ajoute ton code dans ce post cela peux servir à tous. Link to comment Share on other sites More sharing options...
caromax Posted March 16, 2014 Share Posted March 16, 2014 (edited) 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 March 16, 2014 by caromax (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