Автор Тема: Вопрос по сортировке...  (Прочитано 404 раз)

22 Апреля 2014, 09:07:25
  • Старожил
  • ****
  • Сообщений: 287
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
По сортировке интернет говорит следующее:
http://nemops.com/sort-by-sales-prestashop/#.U1Sx_Veym80

Однако столкнулся со следующим, что при выборе сортировки идёт запрос GET к модулю blocklayered
..../modules/blocklayered/blocklayered-ajax.php?id_category_layered=10&layered_price_slider=670_10303&orderby=name&orderway=desc&_=1398142482709

Причём всё, что переопределяется в class Category extends CategoryCore, а именно function getProducts это вообще никакой роли не играет. Просто не используется...

В модуле blocklayered есть своя public function getProducts которая использует function getProductByFilters где судя по всему и осуществляется сортировка...

Объясните пожалуйста этот момент...
22 Апреля 2014, 11:21:20
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86329
  • Репутация: +25417/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Модуль blocklayered полностью заменяет выдачу. Если хотите менять сортировку, то переопределяйте orderby и orderway в этом модуле.
22 Апреля 2014, 11:34:19
Ответ #2
  • Старожил
  • ****
  • Сообщений: 287
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Модуль blocklayered полностью заменяет выдачу. Если хотите менять сортировку, то переопределяйте orderby и orderway в этом модуле.
Спасибо за ответ...

Вобщем я решил это так...
Значит имеем таблицу _product_visits (создал для себя чтобы писать туда количество просмотров для каждого товара по аналогии с _product_sale)
Так вот, чтобы осуществить сортировку по количеству просмотров
в файле blocklayered.php для функции function getProductByFilters там где
$this->products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('

добавляем две строки
.........
ps.visits sales, в параметры
........
и
LEFT JOIN '._DB_PREFIX_.'product_visits ps ON (ps.id_product = p.id_product) для связи с таблицей

Теперь в ../classes/Tools.php
добавляем
, 7 => 'sales'   после 6

Ну и в product-sort.tpl
<option value="sales:desc" {if $orderby eq 'sales' AND $orderway eq 'desc'}selected="selected"{/if}>{l s='Sales: Best to Worst'}</option>
<option value="sales:asc" {if $orderby eq 'sales' AND $orderway eq 'asc'}selected="selected"{/if}>{l s='Sales: Worst to Best'}</option>

Всё сортировка работает..

Так нужно было вносить изменения? Ничего не забыл....
22 Апреля 2014, 11:39:06
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86329
  • Репутация: +25417/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Можно и так, главное что работает.