Есть необходимость учитывать фильтрацию в результатах поиска. Поясню:
Имеется всем известный и популярный плагин "Поиск PRO". Работает прекрасно, но когда мы ввели поисковый запрос и далее задействовали фильтр, мы получаем неверное количество найденных товаров и, соответственно, неверное количество страниц. Причем, количество определяется не в классе плагина, а в классе shopProductsCollection в методе count(), который, учитывая поисковый запрос, не учитывает выбранные фильтры.
Проиллюстрирую примерами:
введен поисковый запрос "принтер 3d" и после этого выбран фильтр по цене:
В результатах поиска мы видим всего 4 товара (при настройке 30 товаров на страницу), но при этом есть ссылка на вторую страницу и надпись "Найдено 55 товаров". При переходе на вторую страницу ничего нет:
При этом в shopProductsCollection для расчета количества найденных товаров формируется такой запрос:
'SELECT COUNT(DISTINCT p.id) FROM shop_product p
JOIN shop_product_skus ps1
ON p.id = ps1.product_id
WHERE p.status = 1
AND (p.name LIKE \'%принтер%\' OR ps1.sku LIKE \'%принтер%\' OR ps1.name LIKE \'%принтер%\')
AND (p.name LIKE \'%3d%\' OR ps1.sku LIKE \'%3d%\' OR ps1.name LIKE \'%3d%\')'
То есть без учета выбранных фильтров.
Предлагаю доработать этот момент и учитывать фильтры в методе count() класса shopProductsCollection. Это даст возможность плагинам поиска работать корректно.
0 комментариев