Сортировка по ценам 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 валюта через select {if $currencies|count>1} {foreach from=$currencies item=c} {if $c->enabled} id==$currency->id} selected="selected"{/if}>{$c->name|esca...
Выгружаем в Яндекс Маркет только первый вариант то... Иногда необходимо выгружать в Яндекс Маркет только первый вариант товара. Данное решение поможет решить эту задачу. Открываем файл yandex.php, ище...
Указываем телефон в настройках Simpla... Намного удобнее указывать телефон только в одном месте, ведь если номер поменяется — удобнее поменять только в настройках в админке, че...
Читайте также  Указываем телефон в настройках Simpla

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