0 Пользователей и 1 Гость просматривают эту тему.
  • 18 Ответов
  • 3594 Просмотров
*

CubaJas

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

SorokinS

  • Осваиваюсь на форуме
  • 164
  • 11
Если делать сортировку по умолчанию "В наличии", то товары, которых нет на складе появляются на верху, что крайне не нужно. 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

  • Захожу иногда
  • 18
  • 2
у меня при данном хаке начинает сортировку от более высокой цене к меньшей
*

maxexp

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

Connection

  • Захожу иногда
  • 18
  • 2
Решение найдено. 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

  • Осваиваюсь на форуме
  • 42
  • 3
спасибо, спасибо.
вник в твой совет сделал вот так.
/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

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

Apposym

  • Осваиваюсь на форуме
  • 39
  • 1
  • Не ругайтесь пжлста, я ЧАЙНИК!
А как тоже самое сделать в VirtueMart 1.9 ??
*

thief

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

testaross

  • Осваиваюсь на форуме
  • 70
  • 1
что то ни этот код:
Цитировать
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

  • Захожу иногда
  • 12
  • 1
Решение найдено. 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

  • Захожу иногда
  • 18
  • 2
Для 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

  • Завсегдатай
  • 476
  • 12
  • зеленею...
Для 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

  • Захожу иногда
  • 20
  • 2
Сортировка по наличию от большего к меньшему
Код
                       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

  • Завсегдатай
  • 476
  • 12
  • зеленею...
А как правильно написать для сортировки по дате добавления (создания)?

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

denis2008

  • Захожу иногда
  • 20
  • 2
А как правильно написать для сортировки по дате добавления (создания)?

Код
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

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

m3chanic

  • Новичок
  • 6
  • 0
А какая конкретно сортировка у вас получилась?
Написал так:
Код
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

  • Завсегдатай
  • 476
  • 12
  • зеленею...
Код
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, 12:10:39 от SolopoV »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод описания категории товаров модуле VirtueMart Товары

Автор Marcello

Ответов: 1
Просмотров: 97
Последний ответ 09.07.2017, 14:08:26
от Marcello
Вывести товары из подкатегории в категорию

Автор xlite

Ответов: 69
Просмотров: 16609
Последний ответ 29.05.2017, 10:33:35
от hels
Дочерние товары таблицей

Автор eclipseggg

Ответов: 125
Просмотров: 23726
Последний ответ 10.04.2017, 09:00:51
от SolopoV
Как сделать промежуточный итог в сплывающем окне корзины? VirtueMart 3?

Автор vasika778

Ответов: 1
Просмотров: 121
Последний ответ 20.03.2017, 08:46:15
от Taatshi
Не добавляются сопутствующие товары

Автор ryocka

Ответов: 0
Просмотров: 105
Последний ответ 25.02.2017, 00:34:45
от ryocka