Jump to content
Olivier CLEMENCE

Petite astuce pour recevoir un email lorsqu'un commentaire est déposé

Recommended Posts

Je vous met ci-dessous le lien vers l'article de mon blog où j'explique comment faire pour modifier le module de base "productComment" afin qu'il vous envoi automatiquement un email lorsqu'un commentaire est déposé!

 

http://blog.manit4c.com/2013/06/04/recevoir-un-email-lorsquun-commentaire-est-depose-sur-la-boutique/

 

C'est bien plus pratique de recevoir un email que d'aller voir tous le temps dans le module si un nouveau commentaire est arrivé !

 

bonne lecture !

 

Ps: n'hésitez pas à utiliser les commentaire ou à répondre à ce post si vous avez des questions

  • Like 2

Share this post


Link to post
Share on other sites

Merci pour l'astuce.

 

Elle pourrait aussi s'améliorer, puisque les données saisies dans le commentaire y sont disponibles, autant les joindres en contenu dans le mail.

 

Je changerai donc votre bout de code :

 

$donnees = array('{texte}' => "nouveau commentaire sur la boutique");

 

par :

$donnees = array(
   '{texte}' => $module_instance->l('New comment available'),
   '{content}' => $comment->content,
   '{id_product}' => $comment->id_product,
   '{id_customer}' => $comment->id_customer,
   '{customer_name}' => $comment->customer_name,
   '{title}' => $comment->title,
   '{grade}' => $comment->grade
  );

 

Et de la même manière, ces données sont utilisables dans vos fichiers :

« modules/productcomments/mails/newcomment.html » et

« modules/productcomments/mails/newcomment.txt »,

 

avec :

 

{texte}
{content}
{id_product}
{id_customer}
{customer_name}
{title}
{grade}

 

Utilisez aussi comme dans mon exemple, l'instance exploitable pour gérer les traductions afin de garder le module international :

 

$module_instance->l('My content')

  • Like 2

Share this post


Link to post
Share on other sites

Bonsoir,

je voudrais inclure les mails au commentaire mais dans le module productcomments , je n'ais pas de dossier /controllers/front/defaut.php :(

Pourriez vous me dire ou chercher

Merci

PS : 1.4.7.3

Share this post


Link to post
Share on other sites

Bonsoir laurens,

 

Regardes dans le fichier productcomments.php à l'intérieur de

 

 private function _frontOfficePostProcess()

 

Je n'utilise pas la version 1.4.... donc je suppose.

Edited by indesign (see edit history)

Share this post


Link to post
Share on other sites

Merci Devnet pour l'amélioration.

J'ai développé ça rapidement histoire d'avoir une petite alerte et ne pas laisser trainer des commentaires inutilement mais ta proposition est très bonne.

 

Ps: désolé pour la réponse tardive mais kle forum Prestashop ne m'envoi plus les mails alors que j'ai bien cliqué sur "follow".. galère :(

Share this post


Link to post
Share on other sites

Je me suis permis de mettre à jour mon article avec ton code en citant ma source bien sûr:

http://blog.manit4c....ur-la-boutique/

 

Tu as aussi un tuto que j'avais lancé y'a déjà plus d'un an sur une question équivalent des envois de mails depuis les modules prestashop.

 

http://blog.dev-net.fr/2011/12/envoyer-de-mails-avec-la-gestion-des-langues-depuis-un-module-prestashop/

 

A+

Share this post


Link to post
Share on other sites

Bonjour,

Merci Indesign pour m'avoir répondu , mais je ne trouve pas dans le fichier citer

Quelqu'un peut m'aider svp

Share this post


Link to post
Share on other sites

Bonsoir

J ai beau essayer je ne reçois pas de mail voilà mon code je pense pas que je me suis trompé :

   if (count(Tools::getValue('criterion')) >= 1)
   {
 $comment->grade = $grade_sum / count(Tools::getValue('criterion'));
 // Update Grade average of comment
 $comment->save();
   }

//send mail
$donnees = array('{texte}' => "nouveau commentaire sur la boutique");
Mail::Send(1,
'newcomment',
'nouveau commentaire',
$donnees,
Configuration::get('PS_SHOP_EMAIL'),
null,
null,
null,
null,
null,
dirname(__FILE__).'/../../mails/');

   $result = true;
  }

 

Dans le fichier " modules/productcomments/controllers/front/defaut.php "

 

J ai aussi créer le dossier mails et ces deux fichier

 

Une petite aide serait la bienvenue

Merci

Share this post


Link to post
Share on other sites

Bonsoir Marc,

 

As-tu suivi la procédure complète ? :) le sous-dossier en ?

 

Créez ensuite un dossier « modules/productcomments/mails/ » et ajoutez y un sous dossier « en ».

Créez ensuite les fichiers « newcomment.html » et « newcomment.txt », placez-les dans le dossier « en » que vous venez de créer et ajoutez y le code suivant (dans les deux fichiers html et txt):

1 {texte}

 

au niveau du code tout semble OK

 

Je post celui de DevNet

 

		   	 if (count(Tools::getValue('criterion')) >= 1)
			{
				$comment->grade = $grade_sum / count(Tools::getValue('criterion'));
				// Update Grade average of comment
				$comment->save();
			}
//send mail
$donnees = array(
'{texte}' => $module_instance->l('New comment available'),
'{content}' => $comment->content,
'{id_product}' => $comment->id_product,
'{id_customer}' => $comment->id_customer,
'{customer_name}' => $comment->customer_name,
'{title}' => $comment->title,
'{grade}' => $comment->grade
  );
Mail::Send(1,
'newcomment',
'nouveau commentaire',
$donnees,
Configuration::get('PS_SHOP_EMAIL'),
null,
null,
null,
null,
null,
dirname(__FILE__).'/../../mails/');

			$result = true;
		}

Share this post


Link to post
Share on other sites

Hi guys,

 

I have the problem whit the maniT4c and the DevNet version !!!!

 

The problem is: the module don't send e-mail .

 

I use the PS 1.5.4.1

Module productcomments v. 2.3

 

Help !

Share this post


Link to post
Share on other sites

Salut a tous et merci pour ce tuto

J'ai tout bien suivi mais comme ba609 je ne recois pas d'email

 

quelqu'un aurait une idée?

J'utilise PS 1.5.4.1 et le module productcomments v. 2.3

 

 

Merci d'avance

Edited by aleeexxxx (see edit history)

Share this post


Link to post
Share on other sites

salut,

je viens de refaire le test et chez moi ça marche sans problème.

 

Peux-tu coller le code complet du fichier "modules/productcomments/controllers/front/defaut.php" ?

Share this post


Link to post
Share on other sites

Hi

maniT4c

 

 

 

the code:

 

<?php
/*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2013 PrestaShop SA
*  @license	http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
// Include Module
include_once(dirname(__FILE__).'/../../productcomments.php');
// Include Models
include_once(dirname(__FILE__).'/../../ProductComment.php');
include_once(dirname(__FILE__).'/../../ProductCommentCriterion.php');
class ProductCommentsDefaultModuleFrontController extends ModuleFrontController
{
public function __construct()
{
 parent::__construct();
 $this->context = Context::getContext();
}
public function initContent()
{
 parent::initContent();
 if (Tools::isSubmit('action'))
 {
  switch(Tools::getValue('action'))
  {
case 'add_comment':
 $this->ajaxProcessAddComment();
 break;
case 'report_abuse':
 $this->ajaxProcessReportAbuse();
 break;
case 'comment_is_usefull':
 $this->ajaxProcessCommentIsUsefull();
 break;
  }
 }
}
protected function ajaxProcessAddComment()
{
 $module_instance = new ProductComments();
 $result = true;
 $id_guest = 0;
 $id_customer = $this->context->customer->id;
 if (!$id_customer)
  $id_guest = $this->context->cookie->id_guest;
 $errors = array();
 // Validation
 if (!Validate::isInt(Tools::getValue('id_product')))
  $errors[] = $module_instance->l('ID product is incorrect');
 if (!Tools::getValue('title') || !Validate::isGenericName(Tools::getValue('title')))
  $errors[] = $module_instance->l('Title is incorrect');
 if (!Tools::getValue('content') || !Validate::isMessage(Tools::getValue('content')))
  $errors[] = $module_instance->l('Comment is incorrect');
 if (!$id_customer && (!Tools::isSubmit('customer_name') || !Tools::getValue('customer_name') || !Validate::isGenericName(Tools::getValue('customer_name'))))
  $errors[] = $module_instance->l('Customer name is incorrect');
 if (!$this->context->customer->id && !Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'))
  $errors[] = $module_instance->l('You must be logged in order to send a comment');
 if (!count(Tools::getValue('criterion')))
  $errors[] = $module_instance->l('You must give a rating');
 $product = new Product(Tools::getValue('id_product'));
 if (!$product->id)
  $errors[] = $module_instance->l('Product not found');
 if (!count($errors))
 {
  $customer_comment = ProductComment::getByCustomer(Tools::getValue('id_product'), $id_customer, true, $id_guest);
  if (!$customer_comment || ($customer_comment && (strtotime($customer_comment['date_add']) + Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME')) < time()))
  {
$comment = new ProductComment();
$comment->content = strip_tags(Tools::getValue('content'));
$comment->id_product = (int)Tools::getValue('id_product');
$comment->id_customer = (int)$id_customer;
$comment->id_guest = $id_guest;
$comment->customer_name = Tools::getValue('customer_name');
if (!$comment->customer_name)
 $comment->customer_name = pSQL($this->context->customer->firstname.' '.$this->context->customer->lastname);
$comment->title = Tools::getValue('title');
$comment->grade = 0;
$comment->validate = 0;
$comment->save();
$grade_sum = 0;
foreach(Tools::getValue('criterion') as $id_product_comment_criterion => $grade)
{
 $grade_sum += $grade;
 $product_comment_criterion = new ProductCommentCriterion($id_product_comment_criterion);
 if ($product_comment_criterion->id)
  $product_comment_criterion->addGrade($comment->id, $grade);
}
if (count(Tools::getValue('criterion')) >= 1)
{
 $comment->grade = $grade_sum / count(Tools::getValue('criterion'));
 // Update Grade average of comment
 $comment->save();



  //send mail
$donnees = array(
'{texte}' => $module_instance->l('New comment'),
'{content}' => $comment->content,
'{id_product}' => $comment->id_product,
'{id_customer}' => $comment->id_customer,
'{customer_name}' => $comment->customer_name,
'{title}' => $comment->title,
'{grade}' => $comment->grade
  );
Mail::Send(1,
'newcomment',
'new comment',
$donnees,
Configuration::get('PS_SHOP_EMAIL'),
null,
null,
null,
null,
null,
dirname(__FILE__).'/../../mails/');


}
$result = true;
  }
  else
  {
$result = false;
$errors[] = $module_instance->l('You should wait').' '.Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME').' '.$module_instance->l('seconds before posting a new comment');
  }
 }
 else
  $result = false;
 die(Tools::jsonEncode(array(
  'result' => $result,
  'errors' => $errors
 )));
}
protected function ajaxProcessReportAbuse()
{
 if (!Tools::isSubmit('id_product_comment'))
  die('0');
 if (ProductComment::isAlreadyReport(Tools::getValue('id_product_comment'), $this->context->cookie->id_customer))
  die('0');
 if (ProductComment::reportComment((int)Tools::getValue('id_product_comment'), $this->context->cookie->id_customer))
  die('1');
 die('0');
}
protected function ajaxProcessCommentIsUsefull()
{
 if (!Tools::isSubmit('id_product_comment') || !Tools::isSubmit('value'))
  die('0');
 if (ProductComment::isAlreadyUsefulness(Tools::getValue('id_product_comment'), $this->context->cookie->id_customer))
  die('0');
 if (ProductComment::setCommentUsefulness((int)Tools::getValue('id_product_comment'), (bool)Tools::getValue('value'), $this->context->cookie->id_customer))
  die('1');
 die('0');
}
}

Share this post


Link to post
Share on other sites

Bonjour, je suis dans le même cas ! prestashop 1.5.3.1

les commentaires sont bien pris en compte mais je ne reçoit pas de mail ! j'ai regarder dans les SPAM et autres mais je ne recoit pas.

J'ai meme d'upliqué le dossier "en" et je l'ai appelé "fr" mais rien ne change.

Avez vous une solution ?

Share this post


Link to post
Share on other sites

Hi ba609

Your code is wrong:

if (count(Tools::getValue('criterion')) >= 1)
    {
	 $comment->grade = $grade_sum / count(Tools::getValue('criterion'));
	 // Update Grade average of comment
	 $comment->save();



  //send mail
$donnees = array(
    '{texte}' => $module_instance->l('New comment'),
    '{content}' => $comment->content,
    '{id_product}' => $comment->id_product,
    '{id_customer}' => $comment->id_customer,
    '{customer_name}' => $comment->customer_name,
    '{title}' => $comment->title,
    '{grade}' => $comment->grade
  );
Mail::Send(1,
'newcomment',
'new comment',
$donnees,
Configuration::get('PS_SHOP_EMAIL'),
null,
null,
null,
null,
null,
dirname(__FILE__).'/../../mails/');


    }
    $result = true;

 

Use this one:

if (count(Tools::getValue('criterion')) >= 1)
   {
 $comment->grade = $grade_sum / count(Tools::getValue('criterion'));
 // Update Grade average of comment
 $comment->save();
   }
   //send mail
   $donnees = array(
 '{texte}' => $module_instance->l('New comment available'),
 '{content}' => $comment->content,
 '{id_product}' => $comment->id_product,
 '{id_customer}' => $comment->id_customer,
 '{customer_name}' => $comment->customer_name,
 '{title}' => $comment->title,
 '{grade}' => $comment->grade
   );   
   Mail::Send(1,
  'newcomment',
  'nouveau commentaire',
  $donnees,
  Configuration::get('PS_SHOP_EMAIL'),
  null,
  null,
  null,
  null,
  null,
  dirname(__FILE__).'/../../mails/');

   $result = true;

Look the }

Share this post


Link to post
Share on other sites

Ok, paste the entire "modules/productcomments/controllers/front/defaut.php" code, i will check it again.

 

Do you have created the "modules/productcomments/mails/en" directory ? check your arborescence again.

 

You can also test with my first code

$donnees = array('{texte}' => "nouveau commentaire sur la boutique");

Perhaps somme data are missing.

 

It's not easy to fix your issue because, product comment use ajax and we can not see error message.

Share this post


Link to post
Share on other sites

Perhaps your mail box does not accept mail when the sender and the target is the same. You can change the target mail.

Change this:

Configuration::get('PS_SHOP_EMAIL'),

 

By

'my@email.com'

 

And remember to check your spam box (I'm sure you have already did it).

 

if it does not work, you should ask help to god :)

Share this post


Link to post
Share on other sites

je viens te tester également ton module, maniT4c mais identique à notre amis anglais les mails ne partent pas ! impossible de savoir pourquoi ! j'ai bien remplacer mon fichier par le tiens mais rien a faire çà ne change rien...

Share this post


Link to post
Share on other sites

Je viens de retester chez moi et ça marche sans soucis :'(

 

Je ne vois pas d'où viens le soucis mais vous n'êtes pas les seuls à rencontrer des problèmes donc il y a quelque chose de différents mais je ne vois pas où.

Essayez peut être de faire ça:

Mail::Send((int)Context::getContext()->language->id,
  'newcomment',
  'nouveau commentaire',
  $donnees,
  Configuration::get('PS_SHOP_EMAIL'),
  null,
  null,
  null,
  null,
  null,
  dirname(__FILE__).'/../../mails/');

 

Et dans le dossier mail il faut créer le sous dossier correspondant à votre langue donc "fr" si votre site est en français et y ajouter les deux fichier newcomment.tpl et newcomment.txt

 

Je vous conseille de regarder le module "mailalerts" qui utilise la fonction mail pour envoyer les alertes vous y trouverez peut être une différence.

Je suis en congé à partir de cet après-midi donc je ne pourrai plus intervenir mais n'hésitez pas à continuer la conversation ici il y a surement d'autres développeur qui viendront participer.

Share this post


Link to post
Share on other sites

OUI un grand merci a toi !! je vai essayer de paufiner un peut ce petit module et essayer d'integré un lien directement sur la fiche produit ! car il est pas facile de rechercher ou a été mit le commentaire... Mais felicitation !!

Share this post


Link to post
Share on other sites

ok ca signifie que c'est l'id de la langue anglaise qui ne correspond pas à 1 (normalement c'est l'id d'origine je crois).

 

L'un de vous peut me copier le code de son front/defaut.php que je puisse vérifier et mettre à jour l'article de mon blog ?

 

For ba609, please paste your defaut.php code i will check and use it for update my blog post

Share this post


Link to post
Share on other sites
<?php
/*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2013 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
// Include Module
include_once(dirname(__FILE__).'/../../productcomments.php');
// Include Models
include_once(dirname(__FILE__).'/../../ProductComment.php');
include_once(dirname(__FILE__).'/../../ProductCommentCriterion.php');
class ProductCommentsDefaultModuleFrontController extends ModuleFrontController
{
public function __construct()
{
 parent::__construct();
 $this->context = Context::getContext();
}
public function initContent()
{
 parent::initContent();
 if (Tools::isSubmit('action'))
 {
  switch(Tools::getValue('action'))
  {
   case 'add_comment':
 $this->ajaxProcessAddComment();
 break;
   case 'report_abuse':
 $this->ajaxProcessReportAbuse();
 break;
   case 'comment_is_usefull':
 $this->ajaxProcessCommentIsUsefull();
 break;
  }
 }
}
protected function ajaxProcessAddComment()
{
 $module_instance = new ProductComments();
 $result = true;
 $id_guest = 0;
 $id_customer = $this->context->customer->id;
 if (!$id_customer)
  $id_guest = $this->context->cookie->id_guest;
 $errors = array();
 // Validation
 if (!Validate::isInt(Tools::getValue('id_product')))
  $errors[] = $module_instance->l('ID product is incorrect');
 if (!Tools::getValue('title') || !Validate::isGenericName(Tools::getValue('title')))
  $errors[] = $module_instance->l('Title is incorrect');
 if (!Tools::getValue('content') || !Validate::isMessage(Tools::getValue('content')))
  $errors[] = $module_instance->l('Comment is incorrect');
 if (!$id_customer && (!Tools::isSubmit('customer_name') || !Tools::getValue('customer_name') || !Validate::isGenericName(Tools::getValue('customer_name'))))
  $errors[] = $module_instance->l('Customer name is incorrect');
 if (!$this->context->customer->id && !Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'))
  $errors[] = $module_instance->l('You must be logged in order to send a comment');
 if (!count(Tools::getValue('criterion')))
  $errors[] = $module_instance->l('You must give a rating');
 $product = new Product(Tools::getValue('id_product'));
 if (!$product->id)
  $errors[] = $module_instance->l('Product not found');
 if (!count($errors))
 {
  $customer_comment = ProductComment::getByCustomer(Tools::getValue('id_product'), $id_customer, true, $id_guest);
  if (!$customer_comment || ($customer_comment && (strtotime($customer_comment['date_add']) + Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME')) < time()))
  {
   $comment = new ProductComment();
   $comment->content = strip_tags(Tools::getValue('content'));
   $comment->id_product = (int)Tools::getValue('id_product');
   $comment->id_customer = (int)$id_customer;
   $comment->id_guest = $id_guest;
   $comment->customer_name = Tools::getValue('customer_name');
   if (!$comment->customer_name)
 $comment->customer_name = pSQL($this->context->customer->firstname.' '.$this->context->customer->lastname);
   $comment->title = Tools::getValue('title');
   $comment->grade = 0;
   $comment->validate = 0;
   $comment->save();
   $grade_sum = 0;
   foreach(Tools::getValue('criterion') as $id_product_comment_criterion => $grade)
   {
 $grade_sum += $grade;
 $product_comment_criterion = new ProductCommentCriterion($id_product_comment_criterion);
 if ($product_comment_criterion->id)
  $product_comment_criterion->addGrade($comment->id, $grade);
   }




 if (count(Tools::getValue('criterion')) >= 1)
   {
	 $comment->grade = $grade_sum / count(Tools::getValue('criterion'));
	 // Update Grade average of comment
	 $comment->save();
   }
   //send mail
$donnees = array(
	 '{texte}' => $module_instance->l('New comment available'),
	 '{content}' => $comment->content,
	 '{id_product}' => $comment->id_product,
	 '{id_customer}' => $comment->id_customer,
	 '{customer_name}' => $comment->customer_name,
	 '{title}' => $comment->title,
	 '{grade}' => $comment->grade
   );  
Mail::Send((int)Context::getContext()->language->id,
	  'newcomment',
	  'New comment',
	  $donnees,
	  Configuration::get('PS_SHOP_EMAIL'),
	  null,
	  null,
	  null,
	  null,
	  null,
	  dirname(__FILE__).'/../../mails/');

   $result = true;











   $result = true;
  }
  else
  {
   $result = false;
   $errors[] = $module_instance->l('You should wait').' '.Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME').' '.$module_instance->l('seconds before posting a new comment');
  }
 }
 else
  $result = false;
 die(Tools::jsonEncode(array(
  'result' => $result,
  'errors' => $errors
 )));
}
protected function ajaxProcessReportAbuse()
{
 if (!Tools::isSubmit('id_product_comment'))
  die('0');
 if (ProductComment::isAlreadyReport(Tools::getValue('id_product_comment'), $this->context->cookie->id_customer))
  die('0');
 if (ProductComment::reportComment((int)Tools::getValue('id_product_comment'), $this->context->cookie->id_customer))
  die('1');
 die('0');
}
protected function ajaxProcessCommentIsUsefull()
{
 if (!Tools::isSubmit('id_product_comment') || !Tools::isSubmit('value'))
  die('0');
 if (ProductComment::isAlreadyUsefulness(Tools::getValue('id_product_comment'), $this->context->cookie->id_customer))
  die('0');
 if (ProductComment::setCommentUsefulness((int)Tools::getValue('id_product_comment'), (bool)Tools::getValue('value'), $this->context->cookie->id_customer))
  die('1');
 die('0');
}
}

Share this post


Link to post
Share on other sites

maniT4c => tu pourrai essayer d'inclure une petite chose maintenant que le probleme est résolue ?

 

sur ce liens une modification existait ! mais pour les anciennes version sans controller !

http://www.webbax.ch/2012/07/30/suivre-les-commentaires-sur-votre-boutique-prestashop/

 

il y a une chose que je trouve particulierement pratique ! c'est le fait de pouvoir cliquer directement sur la fiche produit et d'atterir sur le produit ou le commentaire à été posté ! car meme dans le module dans le back office des fois je cherche des heures le nouveau commentaire...

 

la ligne serait apparement.

 

'<strong>'.$this->l('Fiche produit').'</strong> : <a href="'.Tools::getHttpHost(true).$_SERVER['REQUEST_URI'].'">'.$this->l('Voir la fiche produit').'</a><br/>'.

 

serait t'il possible de la modifier et de l'inclure dans ton script !? celà permettrait de supprimer la ligne

'{id_product}' => $comment->id_product,

 

merci d'avance ;) je pense que tu y arrivera plus facilement que moi :)

Share this post


Link to post
Share on other sites

Pas trop le temps là (je suis enfin en vacance :D ).

En bidouillant vite fait je dirais qu'il suffit de modifier le tpl du mail.

Là où il y a

{id_product}

tu met un truc du genre

<a href="http://www.myshop.com/{id_product}-dfsf.html">voir la fiche produit</a>

 

C'est un peu bourrin comme méthode, je l'ai pas testé mais je penses que tu utilise la réécriture d'url.

Donc avec un lien faux comme celui-ci mais avec l'id correcte, ton prestashop te corrigera l'url et te donnera la bonne.

 

 

Sinon après si tu veux faire plus propre il faut récupérer l'object product dans le controller defaut.php et récupérer son url.

C'est pas super compliquée mais là j'ai pas le temps :)

Share this post


Link to post
Share on other sites

Petit remontage de topic juste pour dire que cela fonctionne parfaitement sue la version 1.5.6. Et en se servant du template html de mailalert, cela permet d'avoir un mail lisible.

 

Merci à vous!

Share this post


Link to post
Share on other sites

Perhaps your mail box does not accept mail when the sender and the target is the same. You can change the target mail.

Change this:

Configuration::get('PS_SHOP_EMAIL'),
By

'my@email.com'

 

Salut, je tente d'installer la fonction sur un Prestashop 1.5.6.2. Mais il faudrait que je change l'email comme dans l'exemple au dessus. Je ne suis pas sur de comprendre : il faut remplacer 'PS_SHOP_EMAIL' par 'my@email.com' ou bien toute la ligne (avec la virgule de la fin) Configuration::get('PS_SHOP_EMAIL'), par 'my@email.com' ?!

Share this post


Link to post
Share on other sites

Bonjour,

Configuration::get('PS_SHOP_EMAIL')

Ca signifie aller chercher la variable "ps_shop_email" dans la configuration de prestashop (donc l'email enregistré lors de l'installation de prestashop).

 

Si vous mettez

Configuration::get('monadresse@gmail.com') 

Le script essaiera d'aller chercher la valeur de la variable monadresse@gmail.com dans la configuration de prestashop ce qui n'a pas de sens car cette variable n'existe pas.

 

Il faut donc en effet mettre:

'monemail@gmail.com' 

.

Share this post


Link to post
Share on other sites

Merci ManiT4c, ça marche comme ça !

dernier détail : au niveau de la virgule après le mail, je la vire ou je la laisse ? (je serai tenté de la conserver, non?)

$donnees,
'monemail@gmail.com',
null,

ou

$donnees,
'monemail@gmail.com'
null,

Share this post


Link to post
Share on other sites

Essayez de la supprimé vous verrez ce qui va se passer :)

A mon avis prestashop ne vas pas trop aimer.

 

En fait vous êtes dans un tableau et chaque élément du tableau est séparé par une virgule, donc à conserver.

Share this post


Link to post
Share on other sites

En parlant de ça est-i possible d'ajouter le champ e-mail, que le client puisse écrire son e-mail lorsqu'il poste un commentaire ? histoire qu'on puisse lui répondre et qu'on l'avertisse manuellement sur son mail que l'on a posté une réponse à son commentaire.

Share this post


Link to post
Share on other sites

Techniquement oui.

Voici la théorie:

1. Rajouter le camp "email" dans le class "comment"

2. rajouter ce même champ dans la table de la base de donnée

3. rajouter le champ sur le formulaire (dans le tpl)

4. modifier le tpl de l'admin pour qu'il affiche l'email enregistré.

Share this post


Link to post
Share on other sites

Techniquement oui.

Voici la théorie:

1. Rajouter le camp "email" dans le class "comment"

2. rajouter ce même champ dans la table de la base de donnée

3. rajouter le champ sur le formulaire (dans le tpl)

4. modifier le tpl de l'admin pour qu'il affiche l'email enregistré.

Merci.

Alors j'ai réussi à afficher le champ déjà en ajoutant ce code la dans le productcomment.tpl

                    <label for="comment_email">

                        {l s='E-mail:' mod='productcomments'} <sup class="required">*</sup>

                        <input id="comment_email" name="E-mail" type="text" value=""/>

 

Maintenant faut qu'il s'affiche au niveau du back office, je vais regarder comment faire et aussi ajouter ce même champ dans la table car je sais pas.

Share this post


Link to post
Share on other sites

4. modifier le tpl de l'admin pour qu'il affiche l'email enregistré.

 

J'arrive pas à trouver où se trouve le fichier :)

Share this post


Link to post
Share on other sites

Fait les étapes dans l'ordre :)

Car afficher dans l'admin l'email qui n'existe pas dans la bdd ça ne fonctionnera pas :)

 

Si tu n'as pas de compétence en php ça va être compliqué par contre :D

Share this post


Link to post
Share on other sites

Fait les étapes dans l'ordre :)

Car afficher dans l'admin l'email qui n'existe pas dans la bdd ça ne fonctionnera pas :)

 

Si tu n'as pas de compétence en php ça va être compliqué par contre :D

Bas si tu es capable d'expliquer je saurai le faire, je suis pas un pro du php mais si on m'indique la marche à suivre :)

Share this post


Link to post
Share on other sites

Genre aller sur la base de donnée prestashop et faire une instruction sql ?

 

ALTER TABLE "Nom de la table" ADD COLUMN "Nom de la colonne à inserrer" [type de données] selon le type [taille] BEFORE "le nom d'une colonne existante afin que la nouvelle colonne soit insérée juste devant"

 

ce qui donnerait

 

ALTER TABLE "ps_product_comment" ADD COLUMN "e-mail" [type de données] BEFORE "title"

type de données je sais pas par contre

Share this post


Link to post
Share on other sites

Bonjour à tous !

 

super pratique ! bravo !!!

 

j'aimerais faire la même chose pour les inscription à la newsletters

 

c'est vrais ça serait plus pratique aussi, de recevoir un mail quand quelqu’un s'inscrit au lieu de vérifier manuellement ...

 

j'avais une piste ici https://www.prestashop.com/forums/topic/260294-astuce-notification-email-pour-inscription-newsletter/ 

mais ne fonctionne pas   :-(

 

si quelqu’un a une idée ?

 

merci d'avance

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

×
×
  • Create New...

Important Information

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