bobkit Posted December 1, 2011 Share Posted December 1, 2011 Bonjour à tous ! Après de nombreuses recherches infructueuses, c'est vers vous que je me dirige. Je vous explique : je souhaiterais pouvoir trier par ordre alphabétique les produits dit phares de la page d'accueil. J'ai trouvé ceci : $products = $category->getProducts((int)($params['cookie']->id_lang), 1, 1000); shuffle($products); array_splice($products, ($nb ? $nb : 10)); Remplaçant ceci : $products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); qui permet de ranger aléatoirement les produits de la page d'accueil, me laissant ainsi espérer une solution possible à mon problème. Merci par avance à tous et à toutes ! Link to comment Share on other sites More sharing options...
RUNps Posted December 1, 2011 Share Posted December 1, 2011 Salut Si on regarde la classe Category, méthode getProducts(), il y a entre autre ce code : public function getProducts($id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $random = false, $randomNumberProducts = 1, $checkAccess = true) { global $cookie; if (!$checkAccess OR !$this->checkAccess($cookie->id_customer)) return false; if ($p < 1) $p = 1; if (empty($orderBy)) $orderBy = 'position'; else /* Fix for all modules which are now using lowercase values for 'orderBy' parameter */ $orderBy = strtolower($orderBy); if (empty($orderWay)) $orderWay = 'ASC'; if ($orderBy == 'id_product' OR $orderBy == 'date_add') $orderByPrefix = 'p'; elseif ($orderBy == 'name') $orderByPrefix = 'pl'; elseif ($orderBy == 'manufacturer') { $orderByPrefix = 'm'; $orderBy = 'name'; } elseif ($orderBy == 'position') $orderByPrefix = 'cp'; if ($orderBy == 'price') $orderBy = 'orderprice'; ... etc ... Donc par défaut le trie se fait sur le champ "position". Et pour les produits phares, il est possible coté Admin de trier les produits comme on veut, suffit de remonter ou descendre la position. Donc quelque part il n'y a pas besoin de toucher au code pour ça. Mais cette méthode prend en 4ème paramètre : $orderBy Donc on peu indiquer le nom du champ sur quel le trie s'appliquera, comme le champ 'name'. $products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'name'); Théoriquement ça devrait fonctionner. L'inconvénient de modifier le code, c'est que lors d'une mise à jour le code risque d'être "écrasé". Link to comment Share on other sites More sharing options...
bobkit Posted December 2, 2011 Author Share Posted December 2, 2011 La théorie se confirme, merci beaucoup ! Link to comment Share on other sites More sharing options...
corky61 Posted January 31, 2013 Share Posted January 31, 2013 Bonjour, moi je voudrais trier les produits phares par ordre de récence, du plus récent au plus ancien svp... HELP!! 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