Пагинация и products
Добрый день!
Вопрос такой в массиве products произошли изменения, удалили несколько товаров из массива, кое-какие добавили, избавились от дублей, пагинация строит страницы по старому принципу, как будто у нас еще есть эти товары и бывает есть страницы с пустым содержанием, бывает что товаров больше на 1 странице чем указанно настройках. Как проапдейтить данные этой пагинации и чтобы правильно строилось наполнение их.
Спасибо
10 ответов
Постановка вопроса неправильная. Нужно не "пагинацию проапдейтить", а изначально правильно формировать $products.
Например, можно повлиять на коллекцию из плагина при помощи хуков
https://developers.webasyst.ru/hooks/shop/products_collection.filter/
https://developers.webasyst.ru/hooks/shop/products_collection.prepared/
тогда в $products изначально не попадут ненужные товары, и, соответственно, пагинация будет рассчитана без них.
А если $products сформировали прямо в шаблоне используя хелпер, что делать? $products сформирован уже как надо...
Я не буду давать советов как лучше стрелять во вторую ногу. Не нужно стрелять в первую ;)
То есть надо начать с
https://developers.webasyst.ru/hooks/shop/products_collection.filter/
https://developers.webasyst.ru/hooks/shop/products_collection.prepared/
По-другому никак? :)
Нужно начать с задачи. Как её сформулировали изначально? Подозреваю, что нужно не выводить товары с ценой "0", например... или в наличии меньше какого-то кол-ва... или в наличии только на определённых складах...
Вот тут в примере
https://developers.webasyst.ru/hooks/shop/products_collection.filter/
решена задача "выводить в категориях только товары с ценой > 0".
3 строчки кода, которые сделают сразу правильно во всех категориях всего сайта.
Сейчас же хелпером фильтруется только переменная, которая была передана в шаблон. Т.е., грубо говоря, отфильтровали 30 из 120 товаров во всей категории... но что происходит с оставшимися 90 мы не знаем. Все ли они "нормальные" или наоборот? Сколько страниц должно быть всего?
Задача добавить некоторые товары и исключить дубли если были при добавлении.
Ну в такой постановке непонятно, почему, чтобы исключить дубли, было выбрано решение исключать их каждый раз при загрузке каждой страницы и тратить на это ресурсы сервера вместо того, чтобы исключить (удалить/скрыть) один раз в БД ¯\_(ツ)_/¯
Ну тогда так: есть "список" товаров, его надо добавить выше всех товаров относящихся к категории, может получится так что в категориях есть уже эти товары и их надо только 1 раз отобразить. Из бд удалять не надо, у меня уже есть решения исключения дублей, то есть готовый массив как его засунуть в коллекцию...
https://www.webasyst.ru/store/plugin/shop/prioritysort/
не подходит и потом сортировка в нем строго по приоритету. А нужно чтобы товары брались из списка, далее вставали в категорию которую нам надо с приоритетом, после исключить повторы.