Jump to content

Lien vers la fiche produit dans mail automatique


Recommended Posts

Bonjour à tous,

 

Je cherche simplement à trouver la formule qui permet de récupérer le lien vers les fiches produits d'une commande, dans un mail automatique.

 

Je m'explique :

 

En changeant le statut d'une commande (par exemple "livré"), je voudrais rajouter dans le template du mail "Livré" (dossier >mails > FR), une phrase afin de récupérer le lien vers le (ou les) produit commandé.

 

J'ai vu que la formule {shop_url} récupérai le lien url de la boutique, quelle est celle qui permet de récupérer le lien des produits ? J'ai essayé {product_url} et {product_link}, ça ne fonctionne pas.

 

Merci à tous ceux qui ont pris le temps de me lire,

Share this post


Link to post
Share on other sites

  • 4 weeks later...

Bonsoir,

 

J'ai cherché dans les template des mails de Prestashop, mais lorsqu'un client passe commande, seul le nom des produits est présent. Je n'ai pas de réponse.

 

Ce serai très intéressant d'avoir une technique pour créer ce genre de liens afin de proposer au client de laisser un avis sur la page du produit commandé.

 

Je vais suivre le fil...

B)

Share this post


Link to post
Share on other sites

  • 4 months later...
  • 6 months later...

Bonjour,

 

Je souhaiterai faire la même chose. Avoir un lien vers la fiche produit sur l'email de commande afin de pouvoir déposer un avis.

 

Presta’Luv, de quel module parles-tu ?

"Non toujours pas, obligé de passer par un module d'envoi de messages pour déposer un avis."

 

Merci de votre aide.

Share this post


Link to post
Share on other sites

  • 3 weeks later...

Bonjour,

 

je me permets de me rajouter à ce pots, j'ai le même besoin, afin de faciliter l'ajout des commentaires client je voudrais mettre le lien des produits soit dans le mail , soit dans les récaps de commandes clients.

 

Quand il demande le détail de sa commande, il y a bien le titre du produit, on doit bien pouvoir récupérer l'url quelque part.

 

Merci

Share this post


Link to post
Share on other sites

  • 1 month later...

J'ai finalement résolu le problème avec ce module :
http://www.prestashop.com/forums/topic/262069-modulo-enviar-solicitud-de-comentario-ps15/

 

Je l'ai configuré pour qu'au passage d'une commande au statut "livré" il envoi un mail automatique de demande d'avis.

Et pour le lien vers les produits, voici le code que j'ai modifié dans sendreviewrequest.php : 
 

foreach($this->getProducts($order) as $review_product)
{
$product = new Product((int)$review_product['id_product'], true, (int)$id_lang);
$image = Image::getCover((int)$review_product['id_product']);
$product_link = Context::getContext()->link-> getProductLink((int)$review_product['id_product'], $product->link_rewrite, $product->category, $product->ean13, $id_lang, (int)$order->id_shop, 0, true);
$image_url =  Context::getContext()->link->getImageLink($product->link_rewrite, $review_product['id_product'], $image['id_image'].'-home_default');
$file_attachment .= array('content' => $image_url, 'name' => $product->name, 'mime' => 'image/jpg');


$products_list .=
'<tr>
<td style="padding: 0.6em 0.4em;width: 25%;text-align: center;background-color: #eee;"><img src="'.$image_url.'" title="'.$product->name.'" alt="'.$product->name.'" /></td>
<td style="padding: 0.6em 0.4em;width: 75%;text-align: left;background-color: #eee;"><strong><a href="'.$product_link.'#idTab5" title="'.$this->l('Click to go to product page').'">'.$product->name.'</a></strong></td>
</tr>';
}

Mis en place sur http://www.planetepartitions.com/

 

J’espère que ça pourra en aider certains... Car moi, j'ai mis du temps à trouver la solution qui me convenait.

Share this post


Link to post
Share on other sites

  • 1 year later...

Bonjour, 

Ce post date un peu mais j'avais aussi trouvé ce module très pratique qui fonctionne bien sauf pour l'image, elle ne s'affiche jamais dans les mails (prestashop 1.6.0.9). J'ai repris ce code mais sans succès 

 

 

J'ai finalement résolu le problème avec ce module :
http://www.prestashop.com/forums/topic/262069-modulo-enviar-solicitud-de-comentario-ps15/

 

Je l'ai configuré pour qu'au passage d'une commande au statut "livré" il envoi un mail automatique de demande d'avis.

Et pour le lien vers les produits, voici le code que j'ai modifié dans sendreviewrequest.php : 
 

foreach($this->getProducts($order) as $review_product)
{
$product = new Product((int)$review_product['id_product'], true, (int)$id_lang);
$image = Image::getCover((int)$review_product['id_product']);
$product_link = Context::getContext()->link-> getProductLink((int)$review_product['id_product'], $product->link_rewrite, $product->category, $product->ean13, $id_lang, (int)$order->id_shop, 0, true);
$image_url =  Context::getContext()->link->getImageLink($product->link_rewrite, $review_product['id_product'], $image['id_image'].'-home_default');
$file_attachment .= array('content' => $image_url, 'name' => $product->name, 'mime' => 'image/jpg');


$products_list .=
'<tr>
<td style="padding: 0.6em 0.4em;width: 25%;text-align: center;background-color: #eee;"><img src="'.$image_url.'" title="'.$product->name.'" alt="'.$product->name.'" /></td>
<td style="padding: 0.6em 0.4em;width: 75%;text-align: left;background-color: #eee;"><strong><a href="'.$product_link.'#idTab5" title="'.$this->l('Click to go to product page').'">'.$product->name.'</a></strong></td>
</tr>';
}

Mis en place sur http://www.planetepartitions.com/

 

J’espère que ça pourra en aider certains... Car moi, j'ai mis du temps à trouver la solution qui me convenait.

 

Quelqu'un aurait une idée ?

Share this post


Link to post
Share on other sites

  • 5 years later...
  • 2 months later...
On 9/28/2021 at 4:07 PM, Timéo007 said:

@Galadrum, j’ai testé ceci mais mon problème n’est pas encore résolu, est-ce que vous avez une autre astuce?

 

Salut. Pour avoir un lien vers les affiches produits. Il faut faire quelques étapes

1 - Crée un override pour les 2 fichiers "OrderHistory.php" et "Mail.php".

2 - Dans override/classes/order/OrderHistory.php

Créer le bouton dans la fonction sendEmail()

	<?php
	public function sendEmail($order, $template_vars = false){
	/................................................/
      $products = $order->getProducts();
      /************************************************/
      /**Insérer ce code juste après*/
      foreach($products as &$product)
      {
        array_push($product_id, $product['product_id']);
        array_push($product_name, $product['product_name']);
        array_push($product_buttom, '<button class="button-avis" style="background-color: #DCDCDC;">Donner mon avis</button>');
        array_push($image_dir,_PS_IMG_DIR_.'p/'.$product['image']->getExistingImgPath().'.jpg');
        array_push($product_link,Context::getContext()->link->getProductLink(
          (int)$product['product_id'],
          $product['link_rewrite'],
          $product['category'],
          $product['ean13']
        ));
      }
      for ($i=0; $i < $data['{nbProducts}']; $i++) {
        $data['{product_id_'.$i.'}'] = $product_id[$i];
        $data['{product_name_'.$i.'}'] = $product_name[$i];
        $data['{product_buttom_'.$i.'}'] = $product_buttom[$i];
        $data['{image_dir_'.$i.'}'] = $image_dir[$i];
        $data['{product_link_'.$i.'}'] = $product_link[$i];
      }
      /***************************************************/


                     

3 - Dans override/classes/Mail.php

<?php

public static function Send($id_lang, $template, $subject, $template_vars, $to,
  $to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null,
  $template_path = _PS_MAIL_DIR_, $die = false, $id_shop = null, $bcc = null, $reply_to = null)
 {
  /.............................../
    if (isset($reply_to) && $reply_to)
      $message->setReplyTo($reply_to);

    $template_vars = array_map(array('Tools', 'htmlentitiesDecodeUTF8'), $template_vars);
    $template_vars = array_map(array('Tools', 'stripslashes'), $template_vars);
  /*****************************************************/
  /*Insérer ce portion de code juste après!*/
  
  for ($i=0; $i < $template_vars['{nbProducts}']; $i++) {
        $template_vars['{product_id}'] .= $template_vars['{product_id_'.$i.'}'].'<br>';
        $template_vars['{product_name}'] = '<div class="product_name col-sm-6" style="margin-left:15px;width:50%;margin-bottom:10px;"><p>'.$template_vars['{product_name_'.$i.'}'].'</p></div>';
        $template_vars['{product_buttom}'] = '<div class="product_buttom col-sm-3" style="margin-top:15px;width:30%;"><a href="'.$template_vars['{product_link_'.$i.'}'].'">'.$template_vars['{product_buttom_'.$i.'}'].'</a></div>';
        $template_vars['{image_dir}'] .= $template_vars['{image_dir_'.$i.'}'];

        $template_vars['{product_image}'] ='<div class="product_image col-sm-3" style="margin-top:14px;"><img style="display:block;margin-left:auto;margin-right:auto;" src="'.$message->attach(new Swift_Message_EmbeddedFile(new Swift_File($template_vars['{image_dir_'.$i.'}']), null, ImageManager::getMimeTypeByExtension($template_vars['{image_dir_'.$i.'}']))).'"width="55px" height="55px" /></div>';

        $template_vars['{products}'] .='<div class="products">'.$template_vars['{product_image}'].''.$template_vars['{product_name}'].''.$template_vars['{product_buttom}'].'</div>';
      }
  /*******************************************************/

4 -  Créer votre Template de mail dans le dossier mails/ : 

ajouter par exemple  avis.html

Insérer ce bloc de code dedans

<div class="box-product" style="border:1px solid #D6D4D4;width:100%;">
    {products}
</div>

Ajuster l'affichage après par des propriétés CSS. 

Edited by Romano__victory (see edit history)

Share this post


Link to post
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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More