Форум русской поддержки Joomla!® CMS
03.12.2016, 02:18:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Как сделать, чтобы товары, которых нет в наличии были внизу?

 (Прочитано 3061 раз)
0 Пользователей и 1 Гость смотрят эту тему.
CubaJas
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 27



« : 30.05.2012, 11:40:20 »

Если делать сортировку по умолчанию "В наличии", то товары, которых нет на складе появляются на верху, что крайне не нужно. VM 2.0.6. И желательно, чтоб при любой другой сортировке эти же товары все равно были последними.
Записан
SorokinS
Осваиваюсь на форуме
***

Репутация: +12/-1
Offline Offline

Пол: Мужской
Сообщений: 164



« Ответ #1 : 03.07.2012, 18:25:46 »

Если делать сортировку по умолчанию "В наличии", то товары, которых нет на складе появляются на верху, что крайне не нужно. VM 2.0.6. И желательно, чтоб при любой другой сортировке эти же товары все равно были последними.
Автор: Archie тут: http://joomlaforum.ru/index.php/topic,216905.0.html
До последнего не верил что прогеры с VM могли так протупить и не сделать данную опцию в админке. Но ду ладно, нашел я решение:
Путь: administrator/components/com_virtuemart/models/product.php
Исправить ASC НА DESC в строке 127
Код:

Код:
$filter_order_Dir = strtoupper(JRequest::getWord('order', 'ASC'));

на
Код:

Код:
$filter_order_Dir = strtoupper(JRequest::getWord('order', 'DESC'));
Записан
Connection
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 18


« Ответ #2 : 06.08.2012, 12:12:05 »

у меня при данном хаке начинает сортировку от более высокой цене к меньшей
Записан
maxexp
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 42


« Ответ #3 : 22.08.2012, 13:20:11 »

логично
автор хак написал, а что это не написал.
здесь он поменял тип сортировки по умолчанию с прямого (ASC) на обратный (DESC)
подозреваю, что не обязательно править именно здесь, а то ВСЯ сортировка становится обратной.
а можно поправить где-то, где задаются настройки сортировки по наличию.
но где это хз.
Записан
Connection
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 18


« Ответ #4 : 04.09.2012, 16:48:58 »

Решение найдено. V2.0.4 -329 строка
/administrator/components/com_virtuemart/models/product.php
добавить `product_in_stock` DESC,
Код:
case 'product_price':
//$filters[] = 'p.`virtuemart_product_id` = p.`virtuemart_product_id`';
$orderBy = ' ORDER BY `product_in_stock` DESC,`product_price` ';
$joinPrice = true ;
break;
заставит сортировать по наличию, сначала то чего больше, учитывая сортировку цены. Кому надо добавить в другие типы сортировки - то в кейсах по тому же принципу. Когда доходит до того чего 0, то начинает опять с меньшей/большей цены
демо _http://allseasons.com.ua/katalog-zontov
« Последнее редактирование: 04.09.2012, 17:02:32 от Connection » Записан
maxexp
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 42


« Ответ #5 : 27.09.2012, 15:39:58 »

спасибо, спасибо.
вник в твой совет сделал вот так.
/administrator/components/com_virtuemart/models/product.php
строка 376. после всех кейсов перед дефолтовским
Код:
case 'product_in_stock':
$orderBy = ' ORDER BY `product_in_stock` DESC,`product_sku` ';
$joinSku = TRUE;
break;
и для подстаховки в настройках админки сначала выставил наличие потом артикул)
в результате имеем: сначала идут те, что в наличии (по убыванию), в порядке возрастания артикула, потом идут те, кто не в наличии, в порядке возрастания артикула)

 Yes! profit
Записан
otto_m
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 36


« Ответ #6 : 09.12.2012, 01:12:42 »

Спасибо, себе тоже сделал по примеру. Только лучше бы было вообще предусмотреть какой-то чекбокс для клиента "В наявности", чтобы вообще глушить по желанию клиента те, которых пока нету (у меня такие товары записаны как 0 на складе). Никто не знает как его втулить над выводом товаров?
Записан
Apposym
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 36


Не ругайтесь пжлста, я ЧАЙНИК!


« Ответ #7 : 28.02.2013, 19:17:53 »

А как тоже самое сделать в VirtueMart 1.9 ??
Записан
thief
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 61


« Ответ #8 : 01.03.2013, 16:38:17 »

Создать тему в соотвествующем разделе форума для этой устаревшей версии Марта.
Записан
testaross
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 70



« Ответ #9 : 08.02.2014, 00:17:26 »

что то ни этот код:
Цитировать
case 'product_price':
            //$filters[] = 'p.`virtuemart_product_id` = p.`virtuemart_product_id`';
            $orderBy = ' ORDER BY `product_in_stock` DESC,`product_price` ';
            $joinPrice = true ;
            break;
ни этот:
Цитировать
case 'product_in_stock':
$orderBy = ' ORDER BY `product_in_stock` DESC,`product_sku` ';
$joinSku = TRUE;
break;
ни настройки в админке не помогают, сортировка продолжает своей жизнью жить.
Записан
Dmitrii2008
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 12


« Ответ #10 : 06.12.2015, 12:14:52 »

Решение найдено. V2.0.4 -329 строка
/administrator/components/com_virtuemart/models/product.php
добавить `product_in_stock` DESC,
Код:
case 'product_price':
//$filters[] = 'p.`virtuemart_product_id` = p.`virtuemart_product_id`';
$orderBy = ' ORDER BY `product_in_stock` DESC,`product_price` ';
$joinPrice = true ;
break;
заставит сортировать по наличию, сначала то чего больше, учитывая сортировку цены. Кому надо добавить в другие типы сортировки - то в кейсах по тому же принципу. Когда доходит до того чего 0, то начинает опять с меньшей/большей цены
демо _http://allseasons.com.ua/katalog-zontovтак
Это все работает. Но он сначала сортирует по количеству, т.е. чего больше сортирует по цене, потом чего меньше.
Подскажите как можно сделать чтоб он сортировал чего больше 1шт(т.е. в гналичии), ну и в конце списка чего нет.
Записан
Connection
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 18


« Ответ #11 : 11.03.2016, 18:06:46 »

Для v3 строка 463
Код:
case 'product_price':
$orderBy = ' ORDER BY `product_in_stock` DESC, `product_price` '.$filterOrderDir.', `virtuemart_product_id` '.$filterOrderDir;
$ff_select_price = ' , IF(pp.override, pp.product_override_price, pp.product_price) as product_price ';
$joinPrice = TRUE;
break
;
Записан
SolopoV
Завсегдатай
*****

Репутация: +12/-0
Offline Offline

Пол: Мужской
Сообщений: 462


зеленею...


« Ответ #12 : 25.05.2016, 08:43:15 »

Для v3 строка 463
Код:
case 'product_price':
$orderBy = ' ORDER BY `product_in_stock` DESC, `product_price` '.$filterOrderDir.', `virtuemart_product_id` '.$filterOrderDir;
$ff_select_price = ' , IF(pp.override, pp.product_override_price, pp.product_price) as product_price ';
$joinPrice = TRUE;
break
;

Ваш код вызывает 500 ошибку на J3.5.1+VM 3.0.14

Код:
syntax error, unexpected 'case' (T_CASE)
Записан
denis2008
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Сообщений: 20


« Ответ #13 : 31.05.2016, 00:51:03 »

Сортировка по наличию от большего к меньшему
Код:
                      case 'product_price':
$orderBy = ' ORDER BY p.product_in_stock DESC, `product_price` '.$filterOrderDir.', `virtuemart_product_id` '.$filterOrderDir;
$ff_select_price = ' , IF(pp.override, pp.product_override_price, pp.product_price) as product_price ';
$joinPrice = TRUE;
break;
По аналогии в любой другой кейс добавляется.
Работает на VM3.0.16+J3.5.1
Записан
SolopoV
Завсегдатай
*****

Репутация: +12/-0
Offline Offline

Пол: Мужской
Сообщений: 462


зеленею...


« Ответ #14 : 31.05.2016, 09:53:43 »

А как правильно написать для сортировки по дате добавления (создания)?

Код:
case 'created_on':
case '`p`.created_on':
$orderBy = ' ORDER BY p.`created_on` '.$filterOrderDir.', `virtuemart_product_id` '.$filterOrderDir;
break;
Записан
denis2008
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Сообщений: 20


« Ответ #15 : 02.06.2016, 11:16:01 »

А как правильно написать для сортировки по дате добавления (создания)?

Код:
case 'created_on':
case '`p`.created_on':
$orderBy = ' ORDER BY p.`created_on` '.$filterOrderDir.', `virtuemart_product_id` '.$filterOrderDir;
break;

полагаю как то так
Код:
case 'created_on':
case '`p`.created_on':
$orderBy = ' ORDER BY p.product_in_stock DESC, p.`created_on` '.$filterOrderDir.', `virtuemart_product_id` '.$filterOrderDir;
break;
Записан
SolopoV
Завсегдатай
*****

Репутация: +12/-0
Offline Offline

Пол: Мужской
Сообщений: 462


зеленею...


« Ответ #16 : 02.06.2016, 11:26:38 »

Написал так:
Код:
case 'created_on':
case '`p`.created_on':
$orderBy = ' ORDER BY p.product_in_stock DESC, `created_on` '.$filterOrderDir.', `virtuemart_product_id` '.$filterOrderDir;
break;
Вроде бы получилось
Записан
m3chanic
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #17 : 10.06.2016, 23:30:38 »

А какая конкретно сортировка у вас получилась?
Написал так:
Код:
case 'created_on':
case '`p`.created_on':
$orderBy = ' ORDER BY p.product_in_stock DESC, `created_on` '.$filterOrderDir.', `virtuemart_product_id` '.$filterOrderDir;
break;
Вроде бы получилось

Хотел сделать чтобы сначала была сортировка по цене, а потом по наличию.
Пробовал вот такой вариант:
Код:
case 'product_price':
//$filters[] = 'p.`virtuemart_product_id` = p.`virtuemart_product_id`';
$orderBy = ' ORDER BY `product_price`, `product_in_stock` DESC ';
$joinPrice = true ;
break;
Получил пустой экран при выводе товара ((
Подскажите, где что поменять нужно, чтобы заработало?
Записан
SolopoV
Завсегдатай
*****

Репутация: +12/-0
Offline Offline

Пол: Мужской
Сообщений: 462


зеленею...


« Ответ #18 : 05.09.2016, 22:22:34 »

Код:
case 'created_on':
case '`p`.created_on':
$orderBy = ' ORDER BY p.product_in_stock = 0 ASC, `created_on` '.$filterOrderDir.', `virtuemart_product_id` '.$filterOrderDir;
break;

Получаем новинки, в начале те, которые есть в наличии (VM3.0.14-16-17).

В настройках админки высталяем сортировку "Дата добавления" - по убыванию.
« Последнее редактирование: 07.10.2016, 13:10:39 от SolopoV » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet