Новости Joomla

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

CubaJas

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

SorokinS

  • Захожу иногда
  • 165
  • 12 / 1
Если делать сортировку по умолчанию "В наличии", то товары, которых нет на складе появляются на верху, что крайне не нужно. 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 / 0
у меня при данном хаке начинает сортировку от более высокой цене к меньшей
*

maxexp

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

Connection

  • Осваиваюсь на форуме
  • 18
  • 2 / 0
Решение найдено. 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 / 0
спасибо, спасибо.
вник в твой совет сделал вот так.
/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
Спасибо, себе тоже сделал по примеру. Только лучше бы было вообще предусмотреть какой-то чекбокс для клиента "В наявности", чтобы вообще глушить по желанию клиента те, которых пока нету (у меня такие товары записаны как 0 на складе). Никто не знает как его втулить над выводом товаров?
*

Apposym

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

thief

  • Захожу иногда
  • 60
  • 1 / 1
Создать тему в соотвествующем разделе форума для этой устаревшей версии Марта.
*

testaross

  • Захожу иногда
  • 70
  • 1 / 0
что то ни этот код:
Цитировать
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 / 0
Решение найдено. 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 / 0
Для 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

  • Давно я тут
  • 573
  • 16 / 0
  • зеленею...
Для 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

  • Осваиваюсь на форуме
  • 19
  • 2 / 0
Сортировка по наличию от большего к меньшему
Код
                       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

  • Давно я тут
  • 573
  • 16 / 0
  • зеленею...
А как правильно написать для сортировки по дате добавления (создания)?

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

denis2008

  • Осваиваюсь на форуме
  • 19
  • 2 / 0
А как правильно написать для сортировки по дате добавления (создания)?

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

  • Давно я тут
  • 573
  • 16 / 0
  • зеленею...
Написал так:
Код
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 / 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

  • Давно я тут
  • 573
  • 16 / 0
  • зеленею...
Код
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 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать товары в 2 колонки в моб версии?

Автор art22

Ответов: 4
Просмотров: 1073
Последний ответ 06.12.2022, 11:42:56
от art22
Как пересохранить все товары?

Автор stydent

Ответов: 1
Просмотров: 1707
Последний ответ 30.03.2022, 10:38:06
от itpremium
mod_virtuemart_product - как скрыть товары, которых нет в наличии?

Автор alexfom_16

Ответов: 40
Просмотров: 4369
Последний ответ 11.10.2021, 17:50:38
от hmr
Вывести товары из подкатегории в категорию

Автор xlite

Ответов: 78
Просмотров: 28095
Последний ответ 08.03.2021, 10:06:58
от kisBoss
Приоритетный Itemid для формирования ссылок на товары/категории

Автор rsn

Ответов: 2
Просмотров: 539
Последний ответ 10.03.2020, 08:21:45
от rsn