Сортировка по ценам Simpla.

Сортировка по ценам Simpla.

Сортировка по цене от «дорогой к низкой» и от «низкой к дорогой». При этом все товары с нулевой ценой отображаются в конце списка и не участвуют в сортировке.

Открываем файл products.tpl вашего шаблона, ищем

<code>&lt;a {if $sort=='price'}    class="selected"{/if} href="{url sort=price page=null}"&gt;цене&lt;/a&gt;</code>

меняем на

<code>&lt;a {if $sort=='price_asc'}    class="selected"{/if} href="{url sort=price_asc page=null}"&gt;по цене низкие&lt;/a&gt;
&lt;a {if $sort=='price_desc'}    class="selected"{/if} href="{url sort=price_desc page=null}"&gt;по цене высокие&lt;/a&gt;</code>

далее открываем api/Products.php, ищем

<code>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&gt;0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock&gt;0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1)';
          break;
     }</code>

меняем на

<code>if(!empty($filter['sort']))
     switch ($filter['sort'])
     {
          case 'position':
          $order = 'p.position DESC';
          break;
 
          // по цене Низкие &gt; Высокие
          case 'price_asc':
          $order = '(SELECT pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock&gt;0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock&gt;0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1)';
          break;
 
          // по цене Высокие &lt; Низкие
          case 'price_desc':
          $order = '(SELECT pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock&gt;0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock&gt;0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1) DESC';
          break;
 
          case 'created':
          $order = 'p.created DESC';
          break;
 
     }

if(!empty($filter['sort'])){
$order = 'IF(v.stock &lt; 1,1,0),'.$order;
$group_by = 'GROUP BY p.id';
$products_stock_null_sort = 'INNER JOIN __variants v ON p.id = v.product_id';
}
</code>

Далее ищем

<code>$query = "SELECT  
                         p.id,
                         p.url,
                         p.brand_id,
                         p.name,
                         p.annotation,
                         p.body,
                         p.product_info,
                         p.position,
                         p.created as created,
                         p.visible,
                         p.market,
                         p.featured,
                         p.meta_title,
                         p.meta_keywords,
                         p.meta_description,
                         b.name as brand,
                         b.url as brand_url
                    FROM __products p        
                    $category_id_filter
                    LEFT JOIN __brands b ON p.brand_id = b.id</code>

и после этого кода

<code>LEFT JOIN __brands b ON p.brand_id = b.id</code>

добавить

<code>$products_stock_null_sort</code>

Вот и все. Смотрим демо.

ДЕМО

Показываем цену товара в другой валюте Simpla... Иногда необходимо вывести цену товара в другой валюте по текущему курсу. Приступим. Открываем файл product.tpl вашего шаблона, ищем и...
Несколько полезностей для Simpla 2.x... Переносим выбор варианта оплаты на первую страницу оформления заказа Автоматически создаваемый артикул как ID товара Выбор количества товара перед п...
Выбор количества товара перед помещением в корзину... Странно, что разработчики вообще не включили данное дополнение в свой дистрибутив, ведь мелочь, а приятно, ну да ладно, сделаем сами. ...
Вывод всех товаров категории на странице товара. S... открываем view/View.php регистрируем функцию: $this->design->smarty->registerPlugin("function", "get_products", array($this, 'get_products_p...
Читайте также  Simpla валюта через select

Сохрани, чтобы не потерять