Jump to content

[Module] Module commentaires produits amélioré


Unoth

Recommended Posts

Bonjour à tous,

J'ai fait une petite modification du module commentaires produits, pour visualiser le nom du produit avant de valider, avec un lien pour voir le produit dans le front office.

Je transmet donc la modif si ça peut servir à quelqu'un ;) Je trouvais ça gênant de pas avoir plus de détails!

[EDIT] Pour le nom du produit, je l'ai forcé en langue Française... si quelqu'un a besoin du multi langue, je ferais la modif

5568_URCpjpTIERzSHAuyU37r_t

productcomments.zip

Link to comment
Share on other sites

  • 3 months later...
  • 1 month later...
  • 3 months later...
  • 4 weeks later...
  • 2 months later...
  • 2 months later...
  • 3 months later...
  • 5 months later...

Bonjour,

J'ai un léger soucis. Le script s'est parfaitement greffé à la boutique que je prépare, l'affichage se déroule bien côté site comme côté administration, mais lors de l'envoie d'un commentaire (avec ou sans note, et avec ou sans validation préalable) il ne s'inscrit pas et je reviens à la page de l'article.

Avez-vous une idée du soucis qui se produit ?


Je suis actuellement sur une base 1.3.1.1.


[EDIT] souci réglé, il ne fallait tout simplement pas forcer la position du module dans Product footer, mais bien le laisser dans Header of pages.

Link to comment
Share on other sites

Bonjour!
sorry my french skills are too bad - so i will ask in english:
I installes this module (v0.2) in prestashop v1.3.2.3 but
if a logged in customer gives a comment i can not see it in the backend to allow or disallow.
Where is the problem?

Please help me!

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour,

Je fonctionne sous prestashop 1.3.2 et j'ai un souci avec ce module, lorsque quelqu'un veut ajouter un commentaire il affiche : " Une erreur est survenue lors de l'ajout du commentaires ", empêchant donc tout dépot !
C'est un peu embêtant car du coup plus personne ne peut rien ajouter sur mon site...

Merci à ceux qui pourront m'aider avec ce souci ou qui l'ont déjà rencontré.

P.S. : J'ai bien vérifier le module est bien dans le "Header of pages" .

Link to comment
Share on other sites

  • 8 months later...

bonjour,

je te remercie pour la modification que t'a apporté pour le module, je voulais savoir si par hasard tu peux me montrer comment modifier le script pour supprimer la limitation des commentaires et supprimer aussi le faite d'attendre une heure avant de poster le deuxième commentaire!

merci d'avance...

prière de me répondre

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...

Moi j'ai un petit soucis....quand je vais dans le back office, je vais dans le module commentaire et j'ai tout en bas :

 

Critères de notation Fatal error: Class 'Validate' not found in /home/data/web/objetsbois/www/modules/productcomments/ProductCommentCriterion.php on line 115

 

C'est vrai qu'un mail quand on reçois un commentaire ce serait super ;)

  • Like 1
Link to comment
Share on other sites

Même erreur dans le back office et deux questions.

 

Comment permettre aux utilisateurs non enregistrés de laisser des commentaires ? (je pense à la fonction guest check out qui permet de passer commande sans s'enregistrer)

 

Aussi, une fois laissé un commentaire, la personne revient dans le produit via l'url ***/product.php?id_product=38 or que j'ai activé les url améliorées, comment faire ?

 

Merci.

Link to comment
Share on other sites

  • 1 month later...

Il n'y a personne qui a essayé de juste rajouter un compteur de commentaires sur la page d'accueil de la zone d'administration (là où se trouvent les statistiques du mois...nb de commandes, nb d'inscriptions...) on pourrait avoir :

Nombre de commentaires : 1

on verrait tout de suite qu'il y a un commentaire....déjà mieux que rien :rolleyes:

Link to comment
Share on other sites

  • 2 months later...

Bonjour

 

Pour recevoir une notification par mail d'un nouveau commentaire, il suffit de surcharger la fonction add() de la classe ObjectModel.

 

Solution clef en main :

  1. Créer un fichier ObjectModel.php dans le dossier "/override/classes/" (attention de ne pas écraser si existant)
  2. Y Copier ce code :
    <?php
    abstract class ObjectModel extends ObjectModelCore
    {
    /**
      * Add current object to database
      *
      * return boolean Insertion result
      */
    public function add($autodate = true, $nullValues = false)
    {
      $result = parent::add($autodate = true, $nullValues = false);	
     if ($result === false)
       return false;	  if(is_a($this, 'ProductComment')) {
       global $cookie;
       $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);
       $templateVars = array();
       if (file_exists(dirname(__FILE__) . '/../../mails/' . $iso . '/new_comment.txt') AND file_exists(dirname(__FILE__) . '/../../mails/' . $iso . '/new_comment.html')) {
        Mail::Send((int)Configuration::get('PS_LANG_DEFAULT'), 'new_comment', Mail::l('New comment', (int)Configuration::get('PS_LANG_DEFAULT')), $templateVars, explode(',', Configuration::get('PS_SHOP_EMAIL')), null, strval(Configuration::get('PS_SHOP_EMAIL')), strval(Configuration::get('PS_SHOP_NAME')), null, null, dirname(__FILE__) . '/../../mails/');
       }
      }	
     return $result;
    }
    }
    ?>
    



  3. Créer 2 templates de mails dans le dossier "/mails/fr/" (et pour chaque langue nécessaire) : new_comment.txt et new_comment.html

  4. Profiter des nouvelles notifications :)

  5. Il y a moyen d'améliorer le contenu du mail avec le nom du produit, du client qui a commenté, etc... La variable $templateVars est là pour ça. A vous de jouer !

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Moi j'ai un petit soucis....quand je vais dans le back office, je vais dans le module commentaire et j'ai tout en bas :

 

Critères de notation Fatal error: Class 'Validate' not found in /home/data/web/objetsbois/www/modules/productcomments/ProductCommentCriterion.php on line 115

 

C'est vrai qu'un mail quand on reçois un commentaire ce serait super ;)

 

j'ai la même erreur comment corriger cela ?

aussi, sur NOTE MOYENNE, ne fonctionne pas

Link to comment
Share on other sites

  • 2 months later...

J'ai ce petite probleme avec le module dans le BO, j'ai ce message:

 

Fatal error: Class 'Validate' not found in C:\Program Files\EasyPHP-5.3.8.1\www\prestashop1\modules\productcomments\ProductCommentCriterion.php on line 115

 

savez-vous quel est le problème? Merci beacoup!

Link to comment
Share on other sites

  • 2 months later...
  • 3 weeks later...
  • 2 weeks later...

Bonjour

 

Pour recevoir une notification par mail d'un nouveau commentaire, il suffit de surcharger la fonction add() de la classe ObjectModel.

 

Solution clef en main :

  1. Créer un fichier ObjectModel.php dans le dossier "/override/classes/" (attention de ne pas écraser si existant)
  2. Y Copier ce code :
    	<?php
    	abstract class ObjectModel extends ObjectModelCore
    	{
    	/**
    	  * Add current object to database
    	  *
    	  * return boolean Insertion result
    	  */
    	public function add($autodate = true, $nullValues = false)
    	{
    	  $result = parent::add($autodate = true, $nullValues = false);	
      if ($result === false)
    	   return false;	  if(is_a($this, 'ProductComment')) {
    	   global $cookie;
    	   $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);
    	   $templateVars = array();
    	   if (file_exists(dirname(__FILE__) . '/../../mails/' . $iso . '/new_comment.txt') AND file_exists(dirname(__FILE__) . '/../../mails/' . $iso . '/new_comment.html')) {
    		Mail::Send((int)Configuration::get('PS_LANG_DEFAULT'), 'new_comment', Mail::l('New comment', (int)Configuration::get('PS_LANG_DEFAULT')), $templateVars, explode(',', Configuration::get('PS_SHOP_EMAIL')), null, strval(Configuration::get('PS_SHOP_EMAIL')), strval(Configuration::get('PS_SHOP_NAME')), null, null, dirname(__FILE__) . '/../../mails/');
    	   }
    	  }	
      return $result;
    	}
    	}
    	?>
    


  3. Créer 2 templates de mails dans le dossier "/mails/fr/" (et pour chaque langue nécessaire) : new_comment.txt et new_comment.html
  4. Profiter des nouvelles notifications :)
  5. Il y a moyen d'améliorer le contenu du mail avec le nom du produit, du client qui a commenté, etc... La variable $templateVars est là pour ça. A vous de jouer !

merci bcp,

ça fonctionne à merveille!!

www.impression-rollup.fr

Link to comment
Share on other sites

  • 3 weeks later...

Bonnjour,

 

@ sjousse : Vous parlez de la variable $templateVars pour personnalisé les emails.

Je souhaiterai intégré la date de la commande et l'url du produit.

 

Merci de votre aide.

 

Bonjour

 

Normalement, l'objet "this" est un "ProductComment" donc vous avez accès à ses propriétés. Par exemple : $this->id_product et $this->id_customer.

 

A partir de la 1ere donnée, vous pourrez récupérer l'URL du produit.

 

Pour la date de commande, ce sera plus dur. Peut-être en combinant les 2 et en récupérant la dernière commande correspondante.

 

Il suffit ensuite d'affecter ces valeurs à la collection $templateVars et de les utiliser dans les templates.

 

Bonne chance.

 

N'hésitez pas à revenir donner vos résultats ici, ça aidera d'autres personnes.

Link to comment
Share on other sites

Bonjour sjousse,

 

Voici ce que j'aimerais intégrer :

$templateVars = array(
'{date}' => $order_date_text,
'{product_link}' => $link->getProductLink($product)
);

Mais cela ne fonctionne toujours pas ...

 

Je suppose que vous avez ajouté {date} et {product_link} dans vos templates de mail ?

 

Autre question, avez-vous vérifié qu'il y a bien les bonnes valeurs dans $order_date_text et $link->getProductLink($product) ?

Et un d($templateVars) donne quoi ?

 

Afin de pouvoir vous aider, vous pouvez partagez les fichiers liés ?

 

PS: préférez {date_commande} plutôt que {date} qui est trop générique et risque d'être en conflit avec une variable de PrestaShop.

Edited by sjousse (see edit history)
Link to comment
Share on other sites

  • 1 month later...

Hello,

 

Je suis intéresser comme vous par l'intégration, d'après l'astuce de sjousse, j'en suis à l'étape 2 , mais je bloque la ...

 

je ne sais pas comment " coder " le fichier modèle html pour que celui-ci inclus correctement le nom de la personne, le commentaire , ainsi que le nom du produit ( les autres infos comment lien direct du produits, date commande, étoile ...ce serait un plus mais pas indispensable )

 

Si quelqu'un aurait la gentillesse de bien vouloir me fournir un modèle qui fonctionne, pour que je puisse savoir comment l'intégré à mon thème .

 

Merci d'avance

 

Bien a vous

 

Johan

Link to comment
Share on other sites

Bonjour à tous,

@sjousse : Excuses moi de ne pas t'avoir répondu car j'ai dû avoir un moment d'absence... :wacko:

Pour répondre à tes questions :

Je suppose que vous avez ajouté {date} et {product_link} dans vos templates de mail ?

Oui j'ai bien ajouté ces variables dans mes templates

Autre question, avez-vous vérifié qu'il y a bien les bonnes valeurs dans $order_date_text et $link->getProductLink($product) ?

Voici ce que j'ai dans le fichier mailalerts.php au niveau

 // Filling-in vars for email
 $template = 'new_order';
 $template_vars = array(

'{date}' => $order_date_text,

'{product_link}' => $link->getProductLink($product)

Pour joindre les fichiers liés, je ne vois pas l'option pour les joindre...

Et qu'est ce qu'un d($templateVars) ?

Encore désolé pour la réponse tardive.

Edited by Superbegood (see edit history)
Link to comment
Share on other sites

Bonjour, je suis nouvelle sur le Forum alors excusez-moi d'avance si je ne publie peut-être pas au bon endroit... Mon problème : après avoir installé le module "commentaires clients" j'ai voulu faire un test et j'ai donc écrit ET validé :/ mon commentaire. Seulement maintenant, impossible de le retrouver pour le supprimer... Oups' (J'avais écris de bonnes choses mais avec mon nom (qui est écrit ailleurs en tant que créatrice des modèles présents sur le site) alors c'est très gênant!!)

 

Quelqu'un saurait m'aider?

 

D'avance merci !

 

www.senoritam.fr (test produit: peignoir femme)

Link to comment
Share on other sites

Bonjour, je suis nouvelle sur le Forum alors excusez-moi d'avance si je ne publie peut-être pas au bon endroit... Mon problème : après avoir installé le module "commentaires clients" j'ai voulu faire un test et j'ai donc écrit ET validé :/ mon commentaire. Seulement maintenant, impossible de le retrouver pour le supprimer... Oups' (J'avais écris de bonnes choses mais avec mon nom (qui est écrit ailleurs en tant que créatrice des modèles présents sur le site) alors c'est très gênant!!)

 

Quelqu'un saurait m'aider?

 

D'avance merci !

 

www.senoritam.fr (test produit: peignoir femme)

 

Bonsoir,

 

jolie thème de site ;)

 

pour pouvoir " administrer " vos commentaires, il vous suffit normalement d'aller dans modules / commentaire...=> configurer.

 

de la vous pourrez le supprimer.

 

Bien a vous

 

johan

Link to comment
Share on other sites

Bonsoir,

 

jolie thème de site ;)

 

pour pouvoir " administrer " vos commentaires, il vous suffit normalement d'aller dans modules / commentaire...=> configurer.

 

de la vous pourrez le supprimer.

 

Bien a vous

 

johan

Merci Johan ! En fait, pour qu'il apparaisse sur le site et donc voir le rendu je l'ai validé justement ce commentaire. Du coup maintenant il n'apparait plus nul part dans modules>commentaires.. Autre solution ?!

Link to comment
Share on other sites

Merci Johan ! En fait, pour qu'il apparaisse sur le site et donc voir le rendu je l'ai validé justement ce commentaire. Du coup maintenant il n'apparait plus nul part dans modules>commentaires.. Autre solution ?!

 

Les commentaires validés n'apparaissent plus dans la config du module. Le seul moyen de les modifier est d'aller faire un petit tour dans la base de données (tables ps_product_comment*).

Link to comment
Share on other sites

Bonjour à tous,

 

Avez-vous des pistes pour les variables des e-mails de notification ?

 

- date de commande

- nom du produit

- url du produit

- titre du commentaire

- commentaire

- notation

 

Je sais qu'il s'agit de la variable

$templateVars = array();

mais quoi mettre dedans et quels fichiers modifiés...

 

Je continu mes recherches et tests divers.

 

Merci

Link to comment
Share on other sites

  • 1 month later...

Hello

 

J'ai trouvé comment mettre l'url du produit dans le mail, bien sur il faut ajouter une variable {link_product} dans le fichier html et/ou txt. Je vous livre le code tel quel à vous d'adapter avec vos variables...

 

global $cookie, $link;
 $id_lang = (!isset($cookie) OR !is_object($cookie)) ? intval(Configuration::get('PS_LANG_DEFAULT')) : intval($cookie->id_lang);
 $shop_name = Configuration::get('PS_SHOP_NAME');
 $shop_url = Tools::getHttpHost(true, true);
 $path_logo = $shop_url._PS_IMG_.'logo.jpg';
 $product = new Product($this->id_product, false, Configuration::get('PS_LANG_DEFAULT'), Context::getContext()->shop);
 $link_product = $link->getProductLink($product);

 $iso   = Language::getIsoById((int)$id_lang);
 $templateVars = array(
  '{id_product}' => $this->id_product,
  '{product_link}' => $link_product,
  '{customer_name}' => $this->customer_name,
  '{title}' => $this->title,
  '{content}' => $this->content,
  '{grade}' => $this->grade,
  '{shop_name}' => $shop_name,
  '{shop_logo}' => $path_logo,
  '{shop_url}' => $shop_url.__PS_BASE_URI__
 );

 Mail::Send($id_lang, 'new_comment',Mail::l('New comment', (int)Configuration::get('PS_LANG_DEFAULT')), $templateVars, explode(',', Configuration::get('PS_SHOP_EMAIL')), 'Webmaster', strval(Configuration::get('PS_SHOP_EMAIL')), strval(Configuration::get('PS_SHOP_NAME')), null, null, _PS_MAIL_DIR_);

 

J'ai retiré le If avant le mail::send mais libre à vous de le garder.

Cette fonctionnalité fonctionne très bien avec prestashop 1.5.2

 

En espérant que ça serve à quelqu'un

Link to comment
Share on other sites

Bonjour gueshfuli,

 

Cela fait déjà quelques temps que je cherche une solution à mon problème.

 

Voilà, j'ai créer un statuts avec un template d'e-mail pour solliciter les clients à laisser un commentaire sur les produits qu'ils ont commandé.

 

Je bute sur le fait d'ajouter les variables suivantes :

- nom des produits commandés

- url des produits commandés

- date de la commande

 

Auriez-vous une astuce à ce sujet ?

 

Merci pour votre aide !

Link to comment
Share on other sites

Hello,

 

J'ai essayer d'inclure les modifications que tu as proposer gueshfuli ,

 

tout fonctionne sauf le lien vers le produits, si j'enlève le code relatif au product link, je reçoit bien le mail, autrement non

 

une idée ?

Link to comment
Share on other sites

ok bingo, y a du mieux, je recois bien le mail après avoir poster un commentaire, ce qu'il ne fessait pas.

par contre dans le mail que je recois le lien ne prend pas.

 

dans le template du mail j'ai mis {link_product}

 

et dans le mail que je recois, il y a toujours {link_product}

 

je ne comprend pas l'erreur ?

Link to comment
Share on other sites

Biensur

 

voici le code du fichier objectmodel

 

<?php
abstract class ObjectModel extends ObjectModelCore
   {
    /**
	  * Add current object to database
	  *
	  * return boolean Insertion result
	  */
    public function add($autodate = true, $nullValues = false)
    {
	  $result = parent::add($autodate = true, $nullValues = false);
 if ($result === false)
	   return false;		  if(is_a($this, 'ProductComment')) {
	   global $cookie,$link;
 $product = new Product($this->id_product, false, Configuration::get('PS_LANG_DEFAULT'), Context::getContext()->shop);
 $link_product = $link->getProductLink($product);
	   $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);
	   $templateVars = array(
	 '{id_product}' => $this->id_product,
	 '{product_link}' => $link_product,
	 '{customer_name}' => $this->customer_name,
	 '{title}' => $this->title,
	 '{content}' => $this->content,
	 '{grade}' => $this->grade,
	 '{shop_name}' => $shop_name,
	 '{shop_logo}' => $path_logo,
	 '{shop_url}' => $shop_url.__PS_BASE_URI__
 );
	   if (file_exists(dirname(__FILE__) . '/../../mails/' . $iso . '/new_comment.txt') AND file_exists(dirname(__FILE__) . '/../../mails/' . $iso . '/new_comment.html')) {
	    Mail::Send((int)Configuration::get('PS_LANG_DEFAULT'), 'new_comment', Mail::l('New comment', (int)Configuration::get('PS_LANG_DEFAULT')), $templateVars, explode(',', Configuration::get('PS_SHOP_EMAIL')), null, strval(Configuration::get('PS_SHOP_EMAIL')), strval(Configuration::get('PS_SHOP_NAME')), null, null, dirname(__FILE__) . '/../../mails/');
	   }
	  }	
 return $result;
    }
    }
?>

 

et voici le code de mon mail

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Commentaire d'un client de {shop_name}</title>
</head>
<body>
<table style="font-family: Verdana,sans-serif; font-size: 11px; color: #374953; width: 550px;">
<tbody>
<tr>
<td align="left"><a title="{shop_name}" href="{shop_url}"><img style="border: none;" src="{shop_logo}" alt="{shop_name}" /></a></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td align="left">Bonjour,</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td style="background-color: #db3484; color: #fff; font-size: 12px; font-weight: bold; padding: 0.5em 1em;" align="left">vous avez un commentaire de {title} {customer_name}</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td align="left"><strong>Vous avez reçu un nouveau message concernant l'article {link_product} ayant pour ID : {id_product} , et venant du client : {title} {customer_name} :</strong> <br /><br /> {content}</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td style="font-size: 10px; border-top: 1px solid #D9DADE;" align="center"><a style="color: #db3484; font-weight: bold; text-decoration: none;" href="{shop_url}">{shop_name}</a> réalisé par <a style="text-decoration: none; color: #374953;" href="http://www.entre-copines.be/">Entre-Copines™</a></td>
</tr>
</tbody>
</table>
</body>
</html>

 

merci

Link to comment
Share on other sites

  • 6 months later...

Bonjour,

J'essaie désespérément d'ajouter un mail au commentaire, mais rien ne se passe, j'ai bien copier les codes de utaku sans succès

j'ai juste ajouter le bout de code ci dessous car j'avais une erreur de variable non definie

 

après:

$id_lang  = (is_object($cookie) AND isset($cookie->id_lang)) ? (int)$cookie->id_lang :

(int)Configuration::get('PS_LANG_DEFAULT');

 

j'ai mis:

$shop_name = Configuration::get('PS_SHOP_NAME');

  $shop_url = Tools::getHttpHost(true, true);

  $path_logo = $shop_url._PS_IMG_.'logo.jpg';

 

 

V: 1.4.7.3

Merci de votre aide

Link to comment
Share on other sites

  • 3 months later...

Bonjour gueshfuli,

 

Cela fait déjà quelques temps que je cherche une solution à mon problème.

 

Voilà, j'ai créer un statuts avec un template d'e-mail pour solliciter les clients à laisser un commentaire sur les produits qu'ils ont commandé.

 

Je bute sur le fait d'ajouter les variables suivantes :

- nom des produits commandés

- url des produits commandés

- date de la commande

 

Auriez-vous une astuce à ce sujet ?

 

Merci pour votre aide !

 

Bonjour,

 

J'avais le même soucis mais à force de mouliner tous les controller/classe de prestashop, j'ai enfin trouvé le controller des mails liés aux statuts de commande.

 

Il faut pour cela aller dans /classes/order/OrderHistory.php vers la ligne 370 pour Prestashop 1.5.6.1.

Par exemple ci-dessous, j'ai ajouté la date de la commande et le numero de facture :

            $data = array(

                '{lastname}' => $result['lastname'],

                '{firstname}' => $result['firstname'],

                '{id_order}' => (int)$this->id_order,

                '{date2}' => $order->date_add,

                '{order_number}' => $order->invoice_number,

                '{order_name}' => $order->getUniqReference()

            );

(Note : J'utilise le numéro de Facture comme numéro de commande dans mon cas)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...