Farris27 Posted August 14, 2019 Share Posted August 14, 2019 (edited) Bonjour à tous, Ma cliente demanderais que pour une certaines catégorie et uniquement celle là. Elle veut que j'applique le tri par position tandis que sur les autres pages, je dois laisser par dates de sortie.... Mon prestashop est 1.7.4.4 , mysql 5.6 , php 7.1. Dans ma configuration j'ai bien entendu mis par date de sortie. Comment pourrais je faire pour son exception ? Quelqu'un a une piste ou je devrais allez modifier ? Merci d'avance Edited August 14, 2019 by Farris27 (see edit history) Link to comment Share on other sites More sharing options...
Farris27 Posted August 14, 2019 Author Share Posted August 14, 2019 Pour ceux qui ont le même soucis que moi, voici une solution temporaire . Allez dans Tools.php : public static function getProductsOrder($type, $value = null, $prefix = false) { switch ($type) { case 'by': $list = array(0 => 'name', 1 => 'price', 2 => 'date_add', 3 => 'date_upd', 4 => 'position', 5 => 'manufacturer_name', 6 => 'quantity', 7 => 'reference'); $value = (is_null($value) || $value === false || $value === '') ? (int)Configuration::get('PS_PRODUCTS_ORDER_BY') : $value; $value = (isset($list[$value])) ? $list[$value] : ((in_array($value, $list)) ? $value : 'position'); $order_by_prefix = ''; if ($prefix) { if ($value == 'id_product' || $value == 'date_add' || $value == 'date_upd' || $value == 'price') { $order_by_prefix = 'p.'; } elseif ($value == 'name') { $order_by_prefix = 'pl.'; } elseif ($value == 'manufacturer_name' && $prefix) { $order_by_prefix = 'm.'; $value = 'name'; } elseif ($value == 'position' || empty($value)) { $order_by_prefix = 'cp.'; } } return $order_by_prefix.$value; break; case 'way': $value = (is_null($value) || $value === false || $value === '') ? (int)Configuration::get('PS_PRODUCTS_ORDER_WAY') : $value; $list = array(0 => 'asc', 1 => 'desc'); return ((isset($list[$value])) ? $list[$value] : ((in_array($value, $list)) ? $value : 'asc')); break; case 'customPosition': $list = array(0 => 'name', 1 => 'price', 2 => 'date_add', 3 => 'date_upd', 4 => 'position', 5 => 'manufacturer_name', 6 => 'quantity', 7 => 'reference'); $value=4; $value = (isset($list[$value])) ? $list[$value] : ((in_array($value, $list)) ? $value : 'position'); $order_by_prefix = ''; if ($prefix) { if ($value == 'id_product' || $value == 'date_add' || $value == 'date_upd' || $value == 'price') { $order_by_prefix = 'p.'; } elseif ($value == 'name') { $order_by_prefix = 'pl.'; } elseif ($value == 'manufacturer_name' && $prefix) { $order_by_prefix = 'm.'; $value = 'name'; } elseif ($value == 'position' || empty($value)) { $order_by_prefix = 'cp.'; } } return $order_by_prefix.$value; case 'customPosition2': $value = 0; $list = array(0 => 'asc', 1 => 'desc'); return ((isset($list[$value])) ? $list[$value] : ((in_array($value, $list)) ? $value : 'asc')); break; } } et dans CategoryController.php : protected function getProductSearchQuery() { $query = new ProductSearchQuery(); if($this->category->id ===55){ $query ->setIdCategory($this->category->id) ->setSortOrder(new SortOrder('product', Tools::getProductsOrder('customPosition'), Tools::getProductsOrder('customPosition2'))) ; }else{ $query ->setIdCategory($this->category->id) ->setSortOrder(new SortOrder('product', Tools::getProductsOrder('by'), Tools::getProductsOrder('way'))) ; } return $query; } 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