[Решено] Как сортировать товар в новой версии?

  • 20 Ответов
  • 10748 Просмотров

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

*

fotoweb

Здравствуйте!

Подскажите пожалуйста как сортировать продукты в новой версии? Раньше были стрелочки, если не ошибаюсь, которыми можно было как в Joomla поднимать или опускать товар по списку и в зависимости от своего положения в этом списке, данный товар в такой же последовательности выводился на страницу.
Сейчас же у меня каждому продукту присвоено какое-то id и на странице отображаются они в порядке возрастания id и в админке ВМ я не вижу как я могу изменить последовательно или поменять этот id. Можно конечно поправить в БД, но это же не выход.

т.е. например я имею товар:
id  name
1  яблоко
2  огурец
3  морковка.

на странице выводятся так: яблоко(id=1), огурец(id=2), морковка(id=3).

Как сделать так, чтоб можно было вывести в другом порядке, например огурец (id=2), яблоко (id=1), морковка (id=3)?

И второй вопрос, не совсем по данной теме, но может подскажите ссылочку - к продукту нужно прикрепить PDF файл. Как это сделать? Я пока исхитрился и добавляю просто ссылку в кастомное поле и потом с помощью ПХП обрабатываю эту ссылку и вывожу как кликабельную иконку PDF, которая ведет к PDF файлу.
« Последнее редактирование: 22.03.2012, 01:32:29 от beagler »

*

fotoweb

Как оказалось это баг в VM 2.0
Решение найдено:
http://forum.virtuemart.net/index.php?topic=98757.0
можно закрывать.

*

Polosat

  • ****
  • 202
  • [+]7 / [-]0
  • Мечты - это то, из чего сделано будущее
лучше бы отписали здесь готовое решение.

Кстати, да. Решение рабочее после этого сортировка товаров в версии 2.0.2 оживает
« Последнее редактирование: 22.03.2012, 00:38:33 от Polosat »

*

fotoweb

Polosat, я ссылочку дал на статью автора фикса.
По смыслу он добавляет новое поле в сортировку "ordering" (которую нужно выбрать в настройках сортировки) и включает сортировку в mysql запросе, а также переделал функцию сохранения сортировки.
Единственный минус еще не учтенный - после редактирования товара, данный товар получает снова значение order = 1. Приходится вручную прописывать ему предидущее значение.

Вот, что нужно сделать:

helpers/shopfunctions.php, line 1169 поменять на:

Код
'product_unit', 'product_packaging', 'p.virtuemart_product_id','ordering');



/models/products.php, function saveorder поменять на:

   
Код
function saveorder($cid , $orders) {
JRequest::checkToken() or jexit( 'Invalid Token' );

$virtuemart_category_id = JRequest::getInt('virtuemart_category_id', 0);

$q = 'SELECT `id`,`ordering` FROM `#__virtuemart_product_categories`
WHERE virtuemart_category_id='.(int)$virtuemart_category_id.'
ORDER BY `ordering` ASC';
$this->_db->setQuery($q);
$pkey_orders = $this->_db->loadObjectList();

$tableOrdering = array();
foreach ($pkey_orders as $order) $tableOrdering[$order->id] = $order->ordering;
// set and save new ordering
foreach  ($orders as $key => $order) $tableOrdering[$key] = $order;
asort($tableOrdering);
$i = 1 ; $ordered = 0 ;
foreach  ($tableOrdering as $key => $order) {
$this->_db->setQuery('UPDATE `#__virtuemart_product_categories`
SET `ordering` = '. $i.'
WHERE `id` = ' . (int)$key . ' ');
if (! $this->_db->query()){
vmError($this->_db->getErrorMsg());
return false;
}
$ordered ++ ;
$i++ ;
}
if ($ordered) $msg = JText::sprintf('COM_VIRTUEMART_ITEMS_MOVED', $ordered);
else $msg = JText::_('COM_VIRTUEMART_ITEMS_NOT_MOVED');
JFactory::getApplication()->redirect('index.php?option=com_virtuemart&view=product&virtuemart_category_id='.$virtuemart_category_id, $msg);

}


« Последнее редактирование: 22.03.2012, 01:06:13 от fotoweb »

*

Polosat

  • ****
  • 202
  • [+]7 / [-]0
  • Мечты - это то, из чего сделано будущее
Цитировать
данный товар получает снова значение order = 1.

жутко неудобная штука когда сортируешь и добавляешь новые товары, ну хоть так... всё лучше чем вообще с неживой сортировкой

*

fotoweb

жутко неудобная штука когда сортируешь и добавляешь новые товары, ну хоть так... всё лучше чем вообще с неживой сортировкой
ну, если есть время и умения писать на PHP, то можно сделать каунтер и
для нового товара id присваивать значение max_id+1,
а для редактируемого id=previous_id,
где max_id - максимальное значение id в списке продуктов данной категории
previous_id - значение id до редактирования.

*

Polosat

  • ****
  • 202
  • [+]7 / [-]0
  • Мечты - это то, из чего сделано будущее
ну, если есть время и умения писать на PHP, то можно сделать каунтер и
для нового товара id присваивать значение max_id+1,

проще дождаться стабильной новой версии - там глядишь эти дела и поправят

*

kaprikorn

  • ***
  • 39
  • [+]4 / [-]0
  • www.cleverscript.ru
Здравствуйте,
helpers/shopfunctions.php, line 1169 - можно плз полный путь до файла? Не понятно вадминка это или нет.
/models/products.php - я так пологаю админка, но все же.

Сделал как описано выше, (virtuemart 2.0.2) никаких изменений не заметил, как отсутствовал порядок, так и отстутствует.

Еще вызывает сомнение вот это поле которое добавляем: 'ordering' , это же поле есть только в таблице #__virtuemart_categories, а нужно ведь не категории сортировать, а ТОВАРЫ в категории.

Если кому понадобиться. Сортировка дочерних товаров по-умолчанию: по алфавиту и нигде в админке не настраивается. Идете administrator/components/com_virtuemart/models файл product.php. Строчка 1923 (virt 2.0.10) и меняете "ordering DESC" ($q .= ' GROUP BY `virtuemart_product_id` ORDER BY ordering DESC';) на "virtuemart_product_id" если нужно по id, либо другую переменную, нужную Вам.

Заходите в Настройки / Настройки, переходите на вкладку Настройки заказа и в поле Порядок сортировки по умолчанию выбираете Название, Дата добавления или что кому нужно. Если выбрать Артикул и каждому товару в панели его редактирования в поле Артикул присвоить порядковый номер, то товары будут отображаться в категории согласно этого номера.

*

Dobreff

Сортировка живет своей жизнью!
Сортирует (например по дате) только первый товар, дальше как попало.
Так же и по Цене, первую выводит самую большую, все, что после как попало!

*

rsn

Сортировка живет своей жизнью!
Захожу в админку - товары. Вижу сортировку по id по возрастанию.
Меняю внизу кол-во строк с 20 на 50, сортировка меняется - id по убыванию ))))
Вот точно подмечено, живёт своей жизнью )))
Пипец какой-то. Это бред, но мне пришлось делать вручную вариант с артикулами, который где-то уже на форуме упоминался. Более старым товарам (которые хочу отобразить в конце) присваивать большие артикулы, а более новым (которые хочу отобразить в начале) - на убывание, а потом выставить в настройках сортировку по артикулу... нда....
И всё ради такой просто задачи отсортировать товары в категориях по дате добавления по убыванию.

*

rsn

Хочу обратить внимание на интересную деталь в последней версии VirtueMart (если бы точным 2.0.20b).

Когда в админке заходим в VirtueMart - Товары, то изначально в списке нет возможности задать свой порядок сортировки.
Но если выбрать в фильтре вверху какую-нибудь категорию, то такая возможность задать порядок появляется.

Лично для меня открытие этого так скажем ньюанса сняло очень много вопросов по сортировке)))

У меня сортирует по названию странно. Имею например  товар 2.......товар 105 (у меня есть пробелы в номерах). ПОследовательность на сайте такая:  товар 10, товар 100, товар 101, товар 105, товар 11, товар 12..... товар 8.
В админке вручную задал последовательнеость, но она до лампочки.
Так же навигация Захожу в карточку первого по списку товара, товар 10, вправо переход на 100, перехожу, и все оказывается это последний пункт хотя после 100 идет 101, а  влево с 100 ведет не на 10 с которого пришли, и не на 70 который по факту идет до 100 а на 8 (последний номер в первом десятке который в списке категории идет последним).
« Последнее редактирование: 13.04.2013, 00:03:06 от Рома1981 »

Хочу обратить внимание на интересную деталь в последней версии VirtueMart (если бы точным 2.0.20b).

Когда в админке заходим в VirtueMart - Товары, то изначально в списке нет возможности задать свой порядок сортировки.
Но если выбрать в фильтре вверху какую-нибудь категорию, то такая возможность задать порядок появляется.

Лично для меня открытие этого так скажем ньюанса сняло очень много вопросов по сортировке)))

Большое спасибо за подсказку, действительно снимает очень много вопросов связанных с сортировкой.
Fortes Fortuna Adjuvat

Хочу обратить внимание на интересную деталь в последней версии VirtueMart (если бы точным 2.0.20b).

Когда в админке заходим в VirtueMart - Товары, то изначально в списке нет возможности задать свой порядок сортировки.
Но если выбрать в фильтре вверху какую-нибудь категорию, то такая возможность задать порядок появляется.

Лично для меня открытие этого так скажем ньюанса сняло очень много вопросов по сортировке)))
Спасибо!

*

artserge

Нашел интересную ошибку в просмотре категории (2.0.26d). Допустим стоит у нас сортировка по умолчанию - по цене.
Но если мы отсортировали например по названию товара, и перешли в другую категорию, или зашли снова в эту же но по ссылке из меню - в селекте сортиовки выбранная слетает на "по цене" - ту что по умолчанию стоит, а вот выдача товаров продолжает сортироваться как и выбрали - по названию. Неопрятно как-то...

зашел в файл модели продукта
\administrator\components\com_virtuemart\models\product.php

Нашел в методе function getOrderByList ($virtuemart_category_id = FALSE)

$orderby = JRequest::getVar ('orderby', VmConfig::get ('browse_orderby_field'));

заменил на
$orderby = $this->filter_order;   

Стало работать как надо.

Эх, для вывода товаров мы же нормально вычисляем ордеринг, а вот для нашего фильтробокса - криво сделал кто-то, через getVar 'orderby' ...

Подскажите, как вместо сортировать по "Цена товара" (По цене), можно было сортировать "От дешевых к дорогим" и "От дорогих к дешевым".
Например, как тут: http://rozetka.com.ua/mobile-phones/c80003/filter/preset=smartfon/

Решившего данный вопрос ждет вознаграждение! 

*

borro

  • ******
  • 1271
  • [+]21 / [-]0
  • желаю вам счастья
Здравствуйте!

Скажите, пожалуйста, у всех проблемы при использовании сортировки товаров по полю Порядок? VM 3.0.9 Кто-нибудь решал/находил решение вопроса упорядочивания товаров в рамках одной категории по столбцу Порядок для VirtueMart 3?

*

BHy4eK

Заходите в Настройки / Настройки, переходите на вкладку Настройки заказа и в поле Порядок сортировки по умолчанию выбираете Название, Дата добавления или что кому нужно. Если выбрать Артикул и каждому товару в панели его редактирования в поле Артикул присвоить порядковый номер, то товары будут отображаться в категории согласно этого номера.

Вот спасибо :)
Кофе - лучший друг программиста!

*

Marcello

Здравствуйте. Joomla! 2.5.28 и VirtueMart 2.6.22, товары выводятся модулем VirtueMart Товары. Сортировка товаров в категории не работает вообще никак. С методом правки helpers/shopfunctions.php не понятно, в моем файле 1169 строка содержит символы закрытого комментария. Что должно быть в той заменяемой строке?
« Последнее редактирование: 03.08.2017, 13:07:25 от Marcello »