Автор Тема: Сортировка товаров Prestashop. Сначала по наличию, а потом по цене.  (Прочитано 8981 раз)

09 Март 2014, 14:12:34
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем привет!
Народ, очень давно сижу на престе. Вот перелез на новую версию 1.5.6.2. Точней перелажу потиху.
Товаров в базе больше, чем 85 000. И когда человек открывает категорию, ему показываются товары либо отсортированные по наличию, либо по цене. Другого не реализовано в админке.

Очень бы хотелось сделать так, чтобы сначала шли товары, которые есть в наличии, а именно "количество" больше, Чем 0.
Ну и потом то, что есть в наличии отсортировать по цене.
Решения в Инете искал. Много не нашел. В основном под старые версии. 
По престе:  Версия: 1.5.6.2   Мультимагазин: выключен.   Id магазина в базе:  1.
Если тут есть гуру, которые помогут, обещаю расписать детально процесс внедрения и результат. Заранее спасибо!

09 Март 2014, 14:27:12
Ответ #1
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В стандарном сортировка только по 1 параметру.
Для нескольих параметров сделаланы фильтры - Блок Многоуровневой навигации.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
09 Март 2014, 15:43:59
Ответ #2
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В стандарном сортировка только по 1 параметру.

Спасибо за ответ. Собсна это я и написал в начале.
Для нескольих параметров сделаланы фильтры - Блок Многоуровневой навигации.

Я активно юзаю Блок Многоуровневой навигации, но я не понимаю, как он может повлиять на сортировку. Убрать скажем, все чего нет в наличии.. в теории можно использовав в ссылке URL на настроенный фильтр.

Но этот вариант мне не подходит, так как все ссылки на категории, будут иметь в себе изначально ненужные параметры.


Интересует именно то, как сделать сортировку товаров в категории так, чтобы в начале шли только те, что есть в наличии уже отсортированные по цене.
У меня в голове крутиться вариант, сделать доработку тпл product-list  например в момент когда выводятся товары, сделать так, чтобы выводились только те, у которых количество больше 1.  А потом еще раз запустить выборку , тех у кого количество равно 0.
Но как по мне это не совсем хороший вариант в виду своей нагруженности. запросов в бд будет в два раза больше.
10 Март 2014, 12:15:31
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Цитировать
Но этот вариант мне не подходит, так как все ссылки на категории, будут иметь в себе изначально ненужные параметры.
Для роботов страницы с фильтрами закрывают. Так что дополниельные параметры в url никому не мешают.

Чтобы сделать сортировку по 2 значениям, нужно изменить функцию
public static function getProducts($id_lang, $start, $limit, $order_by, $order_way, $id_category = false, $only_active = false, Context $context = null)в классе Product.
Там задается сортировка
ORDER BY '.(isset($order_by_prefix) ? pSQL($order_by_prefix).'.' : '').'`'.pSQL($order_by).'` '.pSQL($order_way).
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
10 Март 2014, 20:22:31
Ответ #4
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Уважаемый mAgency! Найди если не сложно минутку, чтобы более детально расписать, что куда и вместо чего вставить. задача описана выше. Вы очень поможете многим, кто сталкивается с такой проблемой и Вас будут боготворить!
11 Март 2014, 17:39:50
Ответ #5
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
12 Март 2014, 11:06:40
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Эту функцию нужно переделать, об этом написали. Так как сделано не возможно сортировать по нескольким парамметрам.
В функцию передается только 1 переменная для сортировки "$order_by".  Работы много, менять нужно в нескольких местах класса. Насчет того, что нужна многим, ни разу не вставал такой вопрос. Была бы нужна многим уже бы сделали модуль.
12 Март 2014, 12:23:39
Ответ #7
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Извините, но зачем форум? Для того, чтобы вы оставили сообщение о том, что у вас много работы? Побольше сообщений оставить?  Либо давайте ответ, либо проходите мимо.
Спасибо тем, кто отвечает по делу.
12 Март 2014, 12:40:34
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Форум для того, чтобы помогать тем, кто сам хочет разобраться как работать с prestashop.
Для тех кто не хочет сам ничего делать есть ветка работа.
12 Март 2014, 13:52:18
Ответ #9
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А  я и хочу разобраться.  Вам я так понял лишь бы денег скосить. это понятно и нормально. 
Но вопрос есть вопрос.  Отвечать мне у вас время есть, а помочь нет? Или только за деньги? Если да, то у меня их нет.
12 Март 2014, 14:14:15
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Денег скосить это конечно хорошо. Только деньги я беру за свою работу, а не за чужую. Ни у кого не прошу. Делаю что люди заказывают и получаю за это оплату. Считаю что это нормально.

Если бы я только денег косил, то не отвечал бы и не помогал никому. Смотрите количество постов, пройдитесь по ним. Там много кто говорит спасиба за помощь. Для этого и форум, чтобы отвечать людям, которые хотят разобраться. Только разобраться - значить самому делать. Не за вас кто-то будет делать, а вы сами.

Тут уже многие помогли, написали где найти код,  где изменить. Осталось только добавить новую переменную и изменить запрос к базе.  Это же самому сделать можно, тупо взять книжку по php и mysql и написать код. Не получиться тогда можно опять задать вопрос. Показать код, что сделал. Подскажут как лучше и где ошибки. Вот это и есть помощь. А сделать всю работу за другого, это не помощь.

Вы делаете магазин, у вас товаров несколько тысяч. Вы что их раздаете бесплатно? Судя по постам, выделенный сервер в аренде.
И нет денег чтобы улучшить магазин? Это больше на развод похоже.
 
12 Март 2014, 18:17:38
Ответ #11
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Про то, что это нормально брать деньги за работу я так и написал. перечитайте.
Денег нет. Так сложилось. случился кризис и денег нет. поэтому и решили все заново замутить. Но у вас получилось надавить на больное. Спасибо.
Сервер в аренде.... так стоп. я не хотел переходить на личности. я по престе многое что изучил за исключением внутреннего кода. могу верстать, могу рисовать, могу двигать, модули делать простые.
Столкнулся с проблемой над которой просидел несколько дней и у меня ничего не получилось. обратился к Вам. Если помочь не можете или у вас нету времени или еще что. Скажите коротко: Готов помочь, но только за деньги. И может быть я и вернусь, Если не будет других, кто поможет. А я знаю , что помогут. 
13 Март 2014, 14:45:06
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Чтобы сделать сортировку по 2 значениям, нужно изменить функцию
public static function getProducts($id_lang, $start, $limit, $order_by, $order_way, $id_category = false, $only_active = false, Context $context = null)в классе Product.
Там задается сортировка
ORDER BY '.(isset($order_by_prefix) ? pSQL($order_by_prefix).'.' : '').'`'.pSQL($order_by).'` '.pSQL($order_way).
Сортировка по 2 полям: цене и количеству.
ORDER BY p.`price` ASC , p.`quantity` ASC
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
16 Март 2014, 15:40:46
Ответ #13
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Перепробовал в разных местах заменить код.. и не работает...  может у кого есть идеи, хотя бы как  сделать сортировку по цене по возрастанию, но кроме 0.
То есть сначала идут товары  с ценой больше 0 (вне зависимости от наличия)  а потом те, что 0.
18 Март 2014, 19:42:02
Ответ #14
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Народ помогите плиз. Задолбался тыкать туда сюда... не пашет и все....