Jump to content

[Résolu] Trier les produits phares


Recommended Posts

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

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

  • 1 year later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...