Как правильно внедриться в mFilter2?
Уважаемые коллеги. Может кто советом поможет. Ситуация такая — работает mFilter2: выводится 20 товаров на странице с стандартной пагинацией в виде кнопок. Нужно чтобы через каждые к примеру 5 товаров выводился баннер (если товаров 20 на странице, то их к примеру 3, если 40 то 6 и т.д.). При чем баннеры разные и зависят от фильтра.
Вывод баннеров понятно можно сделать в tpl написав условие
Сейчас реализован лишь поиск баннеров типа
Вывод баннеров понятно можно сделать в tpl написав условие
{if $banners[$idx]}{$banners[$idx]['image']}{/if}. Но как сделать чтобы поиск самих баннеров (сам сниппет) происходил 1 раз за запрос фильтра или входа на страницу?Сейчас реализован лишь поиск баннеров типа
{var $banners = 'getBanners' | snippet} который возвращает список с ключом номера товара после или до которого должен стоять. Но ей Богу не запускать же этот сниппет в каждой tpl. Комментарии: 4
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
1. Разместил в шаблоне блок в котором должен быть баннер с классом jsInnerBanner, скрытно.
2. Пометил все превьюхи классом к примеру jsBannerMark.
3. Повесил обработчик на событие mse2_load
Сама функция insertBanner ищет скрытый блок, вытаскивает из него шаблон баннера и вставляет в нужное место, я сделал в процентах, но вы можете сделать как вам нравится.
Сами баннеры я сделал в виде ресурсов и забираю их через pdoResources. Конечно в чистом виде вам моё решение не подойдет, но думаю общая идея пригодится.
1) создал кастомный сlass customFilter extends mse2FiltersHandler, возможность создания которого предусмотрена компонентом
2) переназначил функцию constract3) В своей функции catalogBanners() выполнил что мне нужно: 4) в tpl mFilter2 уже обращаясь к сессии взял что мне нужно: Итого:
— вызывается 1 раз, как и нужно и с появлением контента
— нет причин бояться обновления компонента