brunollivier Posted August 14, 2011 Share Posted August 14, 2011 Bonjour à tous, Voilà je suis novice sur PS. Je voudrais savoir si c'est possible de mettre en place un affichage aléatoire des produits dans une catégorie. Je m'explique, un internaute clique sur une catégorie et il y a donc une liste de produit. Si la liste est longue, le client doit cliquer sur la page 2, page ... Est-il possible d'afficher aléatoirement un produit (le dernier s'affiche en premier, qu'un autre arrive au moins une fois en premier). Je vois que pour les produits phares c'est possible mais je ne trouve pas la solution pour la liste des produits dans une catégorie. Même dans le BO, il n'est possible que de faire un affichage selon le prix ou la date ou ... mais pas un affichage aléatoire. Pourriez-vous m'aider? Merci d'avance Link to comment Share on other sites More sharing options...
NassimBojji Posted August 15, 2011 Share Posted August 15, 2011 Bonjour, Je recherche la même chose!! SVP aidez-nous!! Merci d'avance Cordialement, Nassim Link to comment Share on other sites More sharing options...
brunollivier Posted August 17, 2011 Author Share Posted August 17, 2011 Bonjour, voici une solution que je viens de trouver. Ouvrir : classes/Category.php ETAPE 1 : activer le tri aléatoire : Ligne 353, il faut activer l'affichage aléatoire (random) par défaut : public function getProducts($id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $random = false, $randomNumberProducts = 1) { remplacer par : public function getProducts($id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $random = true) En gros, on supprime le nombre de produit à afficher par défaut (1) ETAPE 2 : supprimer la requête SQL : ligne 413, if ($random === true) { $sql .= ' ORDER BY RAND()'; $sql .= ' LIMIT 0, '.intval($randomNumberProducts); } else { $sql .= ' ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).' Remplacer par : if ($random === true) { $sql .= ' ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).' ETAPE 3 : on regarde le résultat et voilà le travail. 1 Link to comment Share on other sites More sharing options...
jeckyl Posted August 17, 2011 Share Posted August 17, 2011 Bonjour, 2 remarques : Si vous faites des modifications sur le coeur de porestashop depuis la version 1.4 VOUS DEVEZ OBLIGATOIREMENT utiliser l'overide afin de pouvoir conserver cette modification lors d'une mise à jour. Si vous faites un affichage aléatoire de vos produits sur les pages catégorie, vous faites tout pour embrouiller le client vous savez celui qui discute avec son pote/copine au téléphone en lui disant tien tu vas dans telle catégorie et tu prends le 3ème produit il est super, ben là ce n’est plus possible, comme le client qui revient 2 jours après en se rappelant avoir vu un produit sur la seconde page de la catégorie trucmuche et là rien un truc tout pas beau donc le client et perdu. Si on ne permet pas l'aléatoire sur les catégorie c’est justement pour ne pas perturber. Peut être serait il plus judicieux, si on a des sous sous catégories, de mettre comme un module produit phare sur la sous catégorie, cela permettrait d'apporter un choix aléatoire sans dénaturer une recherche directe. 1 Link to comment Share on other sites More sharing options...
Patrick_64 Posted April 13, 2012 Share Posted April 13, 2012 Bonjour, je viens de faire la manip mais rien ne bouge (v1.4.6.2) j'ai trouvé la ligne 501 : public function getProducts($id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $random = false, $randomNumberProducts = 1, $checkAccess = true) que j'ai remplacé par : public function getProducts($id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $random = true, $checkAccess = true) puis je suis allé ligne 568 où j'ai remplacé : $sql .= ' ORDER BY RAND()'; $sql .= ' LIMIT 0, '.(int)($randomNumberProducts); } else { $sql .= ' ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).' par : $sql .= ' ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).' J'ai bien vidé le cahce pour être tranquille. Mais l'affichage reste le même. Patrick 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