blue_shadow Posted July 12, 2013 Share Posted July 12, 2013 Salut à tous, j'utilise la derniere version de presta avec le theme madame. J'utilise le petit systeme de rating déja incorporer a prestashop, lorsque l'on commente un produit et je voudrais l'améliorer un peu. Je me demandais si c'étais possible de faire afficher les rating des produits, mais en les affichant pas critere a la place de la note moyenne. Vous voyez ce que je veux dire, je voudrais faire afficher les étoiles moyenne du critere 1 et les étoiles moyenne du critere 2 en dessous. Savez-vous si c'est jouable ou c'est peine perdu, c'est mon premier projet prestashop alors je suis pas tres callé avec les hook et tout ça, mais je suis programmeur alors je devrais comprendre vos explications. Merci d'avance J-Francois H Link to comment Share on other sites More sharing options...
Bondaty and Co Posted July 12, 2013 Share Posted July 12, 2013 Topic déplacé section "développement" Link to comment Share on other sites More sharing options...
blue_shadow Posted July 12, 2013 Author Share Posted July 12, 2013 ah désolé, j'étais pas au bon endroit Link to comment Share on other sites More sharing options...
semor Posted July 13, 2013 Share Posted July 13, 2013 Bonjour, Ça demande quelques connaissances en dév, étant donné qu'il faut créer des variables pour les notations. Je pense que ça doit être possible, en somme il faut que le client note plusieurs choses, ça ne m'as pas l'air impossible. Mais avant ça par hasard, tu as déjà regardé si des modules peuvent faire une chose similaire ? Parce que si tu trouve un module peu cher, autant le prendre que de perdre du temps sur une solution de 'bricolage'. Link to comment Share on other sites More sharing options...
blue_shadow Posted July 13, 2013 Author Share Posted July 13, 2013 (edited) ouais, ya des modules qui le font, mais ils sont plutot cher, dans les 75$ à 100$. Mais le client note déja plusieurs choses, j'ai deux critere de rating par produit et par defaut, la note moyenne des 2 critères est affichée, j'esperais qu'il y avais une variable pemettant d'aller récupérer un nombre (du genre 3,2/5 dépendant de la cote donnée par les clients, en fait) par critère. On obtenant un chiffre comme sa, je pourrais gérer combien d'étoiles faire afficher et c'est du tout cuit. 1/5 = une étoile, et ainsi de suite. Edited July 13, 2013 by blue_shadow (see edit history) Link to comment Share on other sites More sharing options...
semor Posted July 16, 2013 Share Posted July 16, 2013 N'utilisant pas ce module personnellement, je suppose que ce que tu veux comme variable est en faite la note donnée par tel client sur tel critére. ---------------------------------------------- Exemple: M.Dupont as noté le produit 'stylo bic' sur le critére 'durée de vie' ==> 5/10 Toi tu veux récuperer ton 5/10 pour pouvoir afficher 5 étoiles. --------------------------------------------- Si c'est cela, ta valeur doit être stockée dans la BD (peut être). Link to comment Share on other sites More sharing options...
indesign47 Posted July 16, 2013 Share Posted July 16, 2013 (edited) Les notes sont stockées dans la BD tables : ps_product_comments ps_product_grade ps_product_criterion Les valeurs nécessaires sont : Id_product_comment id_product grade id_product_comment_criterion id_product_comment_criterion_type Le module s'appelle productcomments Les fichiers tpl productcomments-extra.tpl productcomments.tpl Edited July 16, 2013 by indesign (see edit history) Link to comment Share on other sites More sharing options...
semor Posted July 17, 2013 Share Posted July 17, 2013 Tu dois aussi avoir un fichier php je présume, Il faut donc faire une requête SQL pour aller chercher sur ta table ps_product_comments ton id_product_comment_id_product grade. Une chose du genre SELECT Id_product_comment id_product grade,id_product_comment_criterion,id_product_comment_criterion_type FROM ps_product_comments pc,ps_product_grade pg,ps_product_criterion pcri WHERE pc.Id_product_comment id_product grade = pg.Id_product_comment id_product grade ... Faut regarder les jointures de ces tables pour faire correctement la requête. Tu stocke le résultat de ta requête dans une variable type tableau, avec un foreach tu parcours le tableau pour en extraire le nombre d'étoiles au final à afficher. Enfin j’espère que c'est bien ça que tu veux Link to comment Share on other sites More sharing options...
indesign47 Posted July 17, 2013 Share Posted July 17, 2013 Tu dois aussi avoir un fichier php je présume, oui, ProductComment.php @Blue_shadow tu trouveras peut-être ton bonheur dans la fuction public static function getAveragesByProduct($id_product, $id_lang) { /* Get all grades */ $grades = ProductComment::getGradeByProduct((int)$id_product, (int)$id_lang); $total = ProductComment::getGradedCommentNumber((int)$id_product); if (!count($grades) || (!$total)) return array(); /* Addition grades for each criterion */ $criterionsGradeTotal = array(); $count_grades = count($grades); for ($i = 0; $i < $count_grades; ++$i) if (array_key_exists($grades[$i]['id_product_comment_criterion'], $criterionsGradeTotal) === false) $criterionsGradeTotal[$grades[$i]['id_product_comment_criterion']] = (int)($grades[$i]['grade']); else $criterionsGradeTotal[$grades[$i]['id_product_comment_criterion']] += (int)($grades[$i]['grade']); /* Finally compute the averages */ $averages = array(); foreach ($criterionsGradeTotal as $key => $criterionGradeTotal) $averages[(int)($key)] = (int)($total) ? ((int)($criterionGradeTotal) / (int)($total)) : 0; return $averages; } Link to comment Share on other sites More sharing options...
semor Posted July 17, 2013 Share Posted July 17, 2013 Et bien voila, dans cette fonction tu as tout. Il va chercher toutes les notes, il les additionne pour chaque critère, et te fait ta moyenne . Link to comment Share on other sites More sharing options...
blue_shadow Posted July 17, 2013 Author Share Posted July 17, 2013 ah ben merci de toutes ces pistes, c'est bien ce que je veux, je vais tester tout ça aujourd'hui et je vais venir vous dire si j'y suis arrivé ! 2 Link to comment Share on other sites More sharing options...
indesign47 Posted July 18, 2013 Share Posted July 18, 2013 (edited) @blue_shadow As-tu trouvé une solution ? Si oui, peux-tu la partager avec les autres ? Merci Edited July 18, 2013 by indesign (see edit history) Link to comment Share on other sites More sharing options...
blue_shadow Posted July 18, 2013 Author Share Posted July 18, 2013 ouais c'est ce que j'aurais fait si j'avais réussi, mais j'y arrive pas encore, j'ai du mal 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