Сортировка по цене от «дорогой к низкой» и от «низкой к дорогой»

Скачать Сортировка по цене от «дорогой к низкой» и от «низкой к дорогой»
Недавно искали:

joriks

Житель
Регистрация
28.09.14
Сообщения
38
Реакции
32
Проверялось на 2.3.3 и 2.3.6

Открываем файл products.tpl вашего шаблона, ищем:
PHP:
<a {if $sort=='price'}    class="selected"{/if} href="{url sort=price page=null}">цене</a>
меняем на
PHP:
<a {if $sort=='price_asc'}    class="selected"{/if} href="{url sort=price_asc page=null}">по цене низкие</a>
<a {if $sort=='price_desc'}    class="selected"{/if} href="{url sort=price_desc page=null}">по цене высокие</a>
далее открываем api/Products.php, ищем:
PHP:
if(!empty($filter['sort']))
        switch ($filter['sort'])
        {
                case 'position':
                $order = 'p.position DESC';
                break;
                case 'name':
                $order = 'p.name';
                break;
                case 'created':
                $order = 'p.created DESC';
                break;
                case 'price':
                //$order = 'pv.price IS NULL, pv.price=0, pv.price';
                $order = '(SELECT pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1)';
                break;
        }
меняем на:
PHP:
if(!empty($filter['sort']))
        switch ($filter['sort'])
        {
                case 'position':
                $order = 'p.position DESC';
                break;
                // по цене Низкие > Высокие
                case 'price_asc':
                $order = '(SELECT pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1)';
                break;
                // по цене Высокие < Низкие
                case 'price_desc':
                $order = '(SELECT pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1) DESC';
                break;
                case 'created':
                $order = 'p.created DESC';
                break;
        }
 
  • Мне нравиться
Симпатий: Misha
Назад
Сверху Снизу