- Автор темы
- #1
Всем привет. Очень часто люди сталкиваются с проблемой:
нужно отсортировать товары по цене по возрастанию, но чтобы товары с ценой = 0 (иначе - без цены) были внизу списка.
Например, в некоторых интернет-магазинах на таких товарах стоит вывеска "Под заказ" или "Цену уточняйте" или "идёт обновление цены". Как вывести эту табличку по условию, что {product->variant->price==0}, рассказывать не буду, а вот над проблемой перемещения товаров с нулевой ценой бились многие. Так и не сделали.
Я же сделал.
/api/products.php:
И если кто знает, поделитесь, пожалуйста, готовыми модулями микроразметки. Больше всего интересует микроразметка категории, отзывов, контактов и статей.
Спасибо.
нужно отсортировать товары по цене по возрастанию, но чтобы товары с ценой = 0 (иначе - без цены) были внизу списка.
Например, в некоторых интернет-магазинах на таких товарах стоит вывеска "Под заказ" или "Цену уточняйте" или "идёт обновление цены". Как вывести эту табличку по условию, что {product->variant->price==0}, рассказывать не буду, а вот над проблемой перемещения товаров с нулевой ценой бились многие. Так и не сделали.
Я же сделал.
/api/products.php:
Код:
if(!empty($filter['sort']))
switch ($filter['sort'])
{
case 'position':
$order = 'p.visible DESC, p.featured DESC, p.position DESC';
break;
case 'name':
$order = 'p.name';
break;
case 'created':
$order = 'p.created DESC';
break;
case 'price-max':
$order = '(SELECT pv.price FROM __variants pv WHERE p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE product_id=p.id LIMIT 1) LIMIT 1) desc';
break;
case 'price-min':
$order = '(SELECT CASE pv.price WHEN 0 THEN 9999999 ELSE pv.price END FROM __variants pv WHERE p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE product_id=p.id LIMIT 1) LIMIT 1)';
break;
}
И если кто знает, поделитесь, пожалуйста, готовыми модулями микроразметки. Больше всего интересует микроразметка категории, отзывов, контактов и статей.
Спасибо.