Сортировка товаров на сайте. Товары с нулевой ценой - в конец.

#
Сортировка товаров на сайте. Товары с нулевой ценой - в конец.
Подскажите, как средствами цмс организовать сортировку товаров при выводе их на страницу, чтобы цены шли по-возрастанию, но при этом товары с ценой 0руб., например, были в самом конце?

Пример:
1
2
3
4
5
0
0
0

Просмотрел все возможные параметры к методу showshop - пока ничего не придумал для этого.
#
Re: Сортировка товаров на сайте. Товары с нулевой ценой - в конец.
hanckey313 писал(а):
как средствами цмс организовать сортировку товаров при выводе их на страницу, чтобы цены шли по-возрастанию, но при этом товары с ценой 0руб.
- такое можно организовать средствами XSLT(но в том случае, если у вас в магазине при выводе содержимого групп нет разбиения товаров по страницам, т.е. все имеющиеся в группе товары всегда помещаются на одной странице). В коде XSL-шаблона вместо одного вызова тэмплейта для показа товаров(
<xsl:apply-templates select="item" />
) вам нужно последовательно разместить два - оба с предикатами по цене: в одном нужно указать, чтобы она была больше нуля, а в другом - что равна ему.  
А в метод ShowShop нужно передать параметры для задания сортировки по цене(если они у вас все в одной валюте):
$param['items_field_order'] = 'shop_items_catalog_price';
$param['items_order'] = 'Asc';
#
Re: Сортировка товаров на сайте. Товары с нулевой ценой - в конец.
Можно задать товарам с нулевой ценой какую-нибудь нереально большую цену в магазине — например, 999 999 999,99. А в XSL проверять — если цена равна этому значению, то показывать ноль и не давать добавлять в корзину. Тогда и разбивка по страницам будет доступна.
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Сортировка товаров на сайте. Товары с нулевой ценой - в конец.
Спасибо за ответы. Товары нужно добавлять в корзину и разбивать по страницам, в общем то в этом и проблема... м.б. есть еще какие то варианты?
#
Re: Сортировка товаров на сайте. Товары с нулевой ценой - в конец.
Желательно их отсортировать на уровне логики еще, м.б. какой хитрый извращенный запрос через параметры сделать?
#
Re: Сортировка товаров на сайте. Товары с нулевой ценой - в конец.
Товары с нулевой ценой нужно добавлять в корзину? Если да — то все то же, проверяем цену при добавлении, если она равна этому заранее заданному очень большому значению — то в корзине тоже выводим ноль, и к общему счету плюсуем ноль. И в письмах клиенту и администратору выполняем ту же проверку и выводим ноль.
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Сортировка товаров на сайте. Товары с нулевой ценой - в конец.
Прежде чем пытаться сконструировать извращенский запрос через параметры, попробуйте просто на SQL-е написать запрос(например, с использованием оператора IF и псевдонима поля) к таблице shop_items_catalog_table, который будет сортировать товары нужным вам образом. После того, как вы его напишите, - обращайтесь, поможем передать его в конструктор.
#
Re: Сортировка товаров на сайте. Товары с нулевой ценой - в конец.
natalya,если можно - синтаксис IF'a скиньте
#
Re: Сортировка товаров на сайте. Товары с нулевой ценой - в конец.
Вот, например, такой запрос:

SELECT * FROM `shop_items_catalog_table` ORDER BY CASE WHEN `shop_items_catalog_price` = 0 THEN '999999999' END, `shop_items_catalog_price`


как его использовать?
#
Re: Сортировка товаров на сайте. Товары с нулевой ценой - в конец.
hanckey313 писал(а):
как его использовать?
- попробуйте в метод ShowShop передать параметр:
$param['items_field_order'] = 'CASE WHEN shop_items_catalog_price =0 THEN 999999999 END , shop_items_catalog_price';

Но в методе по-любому произойдет еще и добавление направления сортировки(ASC, DESC или Rand()).
Авторизация