Olivier CLEMENCE Posted June 4, 2013 Share Posted June 4, 2013 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 2 Link to comment Share on other sites More sharing options...
DevNet Posted June 4, 2013 Share Posted June 4, 2013 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') 2 Link to comment Share on other sites More sharing options...
indesign47 Posted July 5, 2013 Share Posted July 5, 2013 Bravo à tous les deux. Indispensable. Link to comment Share on other sites More sharing options...
laurens Posted July 8, 2013 Share Posted July 8, 2013 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 Link to comment Share on other sites More sharing options...
indesign47 Posted July 8, 2013 Share Posted July 8, 2013 (edited) 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 July 8, 2013 by indesign (see edit history) Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted July 9, 2013 Author Share Posted July 9, 2013 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 Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted July 9, 2013 Author Share Posted July 9, 2013 Je me suis permis de mettre à jour mon article avec ton code en citant ma source bien sûr: http://blog.manit4c.com/2013/06/04/recevoir-un-email-lorsquun-commentaire-est-depose-sur-la-boutique/ 1 Link to comment Share on other sites More sharing options...
DevNet Posted July 9, 2013 Share Posted July 9, 2013 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+ Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted July 9, 2013 Author Share Posted July 9, 2013 Super merci, je vais regarder ça dès que possible. En espérant que la majorité des infos soit encore à jour ! Link to comment Share on other sites More sharing options...
laurens Posted July 9, 2013 Share Posted July 9, 2013 Bonjour, Merci Indesign pour m'avoir répondu , mais je ne trouve pas dans le fichier citer Quelqu'un peut m'aider svp Link to comment Share on other sites More sharing options...
Marc Posted August 1, 2013 Share Posted August 1, 2013 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 Link to comment Share on other sites More sharing options...
indesign47 Posted August 1, 2013 Share Posted August 1, 2013 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; } Link to comment Share on other sites More sharing options...
ba609 Posted August 8, 2013 Share Posted August 8, 2013 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 ! Link to comment Share on other sites More sharing options...
aleeexxxx Posted August 8, 2013 Share Posted August 8, 2013 (edited) 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 August 8, 2013 by aleeexxxx (see edit history) Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted August 8, 2013 Author Share Posted August 8, 2013 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" ? Link to comment Share on other sites More sharing options...
ba609 Posted August 8, 2013 Share Posted August 8, 2013 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 [email protected] 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 <[email protected]> * @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'); } } Link to comment Share on other sites More sharing options...
egokits Posted August 8, 2013 Share Posted August 8, 2013 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 ? Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted August 9, 2013 Author Share Posted August 9, 2013 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 } Link to comment Share on other sites More sharing options...
ba609 Posted August 9, 2013 Share Posted August 9, 2013 Hi maniT4c , I did what you said but it does not work. Help! Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted August 9, 2013 Author Share Posted August 9, 2013 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. Link to comment Share on other sites More sharing options...
ba609 Posted August 9, 2013 Share Posted August 9, 2013 Hi maniT4c, this is my module. (Attach Files) productcomments.zip Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted August 9, 2013 Author Share Posted August 9, 2013 (edited) I don't know why it doesn't work in your shop. This is my productComment module, it work on my shop try it. If it does'nt work i think i can't help you more. productcomments.zip Edited August 9, 2013 by maniT4c (see edit history) Link to comment Share on other sites More sharing options...
ba609 Posted August 9, 2013 Share Posted August 9, 2013 Many thanks... but don't work !!!! Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted August 9, 2013 Author Share Posted August 9, 2013 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 '[email protected]' 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 Link to comment Share on other sites More sharing options...
egokits Posted August 9, 2013 Share Posted August 9, 2013 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... Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted August 9, 2013 Author Share Posted August 9, 2013 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. Link to comment Share on other sites More sharing options...
egokits Posted August 9, 2013 Share Posted August 9, 2013 bravo !! tu as corriger le bug !! felicitation... Link to comment Share on other sites More sharing options...
ba609 Posted August 9, 2013 Share Posted August 9, 2013 Hi maniT4c , now it WORK !!! You are the best ! Link to comment Share on other sites More sharing options...
egokits Posted August 9, 2013 Share Posted August 9, 2013 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 !! Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted August 9, 2013 Author Share Posted August 9, 2013 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 Link to comment Share on other sites More sharing options...
ba609 Posted August 9, 2013 Share Posted August 9, 2013 <?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 [email protected] 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 <[email protected]> * @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'); } } Link to comment Share on other sites More sharing options...
egokits Posted August 9, 2013 Share Posted August 9, 2013 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 Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted August 9, 2013 Author Share Posted August 9, 2013 Pas trop le temps là (je suis enfin en vacance ). 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 Link to comment Share on other sites More sharing options...
cthierry Posted November 18, 2013 Share Posted November 18, 2013 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! Link to comment Share on other sites More sharing options...
shazamic Posted May 6, 2014 Share Posted May 6, 2014 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 '[email protected]' 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 '[email protected]' ou bien toute la ligne (avec la virgule de la fin) Configuration::get('PS_SHOP_EMAIL'), par '[email protected]' ?! Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted May 6, 2014 Author Share Posted May 6, 2014 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('[email protected]') Le script essaiera d'aller chercher la valeur de la variable [email protected] dans la configuration de prestashop ce qui n'a pas de sens car cette variable n'existe pas. Il faut donc en effet mettre: '[email protected]' . Link to comment Share on other sites More sharing options...
shazamic Posted May 6, 2014 Share Posted May 6, 2014 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, '[email protected]', null, ou $donnees, '[email protected]' null, Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted May 6, 2014 Author Share Posted May 6, 2014 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. Link to comment Share on other sites More sharing options...
yvesima Posted October 8, 2015 Share Posted October 8, 2015 (edited) Bonjour ok ca marche Merci pour ce travail Edited October 8, 2015 by yvesima (see edit history) Link to comment Share on other sites More sharing options...
pitchart Posted November 27, 2015 Share Posted November 27, 2015 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. Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted November 27, 2015 Author Share Posted November 27, 2015 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é. Link to comment Share on other sites More sharing options...
pitchart Posted November 27, 2015 Share Posted November 27, 2015 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. Link to comment Share on other sites More sharing options...
pitchart Posted November 27, 2015 Share Posted November 27, 2015 4. modifier le tpl de l'admin pour qu'il affiche l'email enregistré. J'arrive pas à trouver où se trouve le fichier Link to comment Share on other sites More sharing options...
Olivier CLEMENCE Posted November 27, 2015 Author Share Posted November 27, 2015 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 Link to comment Share on other sites More sharing options...
pitchart Posted November 27, 2015 Share Posted November 27, 2015 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 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 Link to comment Share on other sites More sharing options...
pitchart Posted November 27, 2015 Share Posted November 27, 2015 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 Link to comment Share on other sites More sharing options...
sebwvs Posted January 19, 2016 Share Posted January 19, 2016 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 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