Как в комплексном компоненте каталога отключить ajax при навигации, но оставить на умном фильтре?
Добрый день!
Подскажите, пожалуйста, может, кто-то уже сталкивался. Использую комплексный компонент каталога с включенным ajax, чтобы фильтрация происходила на лету. Фильтр работает, как надо.
Но есть проблема:
Ajax работает и при переходе из общего списка на детальную страницу товара!
Объясняю, почему для меня это проблема: на проекте подключены разного рода скрипты js, которые делают динамику разным элементам. Типа карусели у галереи на детальной странице товара. Так вот, когда я перехожу на детальную страницу с включенным ajax, то все эти библиотеки дружно отваливаются.
Как побороть, подскажите, пожалуйста?
Заранее спасибо за любой совет.
битрикс и аякс это суровый траходром.
отваливание стилей и скриптов компонентов - это давно известная вещь.
addheadjs addheadcss тут бесполезны - приходиться инклюдить обычным способом.
Айнур Валиев, да, спасибо за совет, я уже попробовал сделать повторную инициализацию для некоторых скриптов. Кое-где сработало, а вот кое-где - нет. Пока поставил костыль с js-перезагрузкой страницы, но это прям стыд, а не решение.
По существу, меня интересует самое нормальное решение - отключение ajax там, где он мне не нужен. то есть мне необходимо, чтобы ajax работал только при фильтрации товаров в общем списке товаров - всё. Остальной рендеринг всего каталога birix мне совершенно ни к чему, так как он мне создает кучу проблем, ломает всю навигацию.
Может, у вас есть какие-то соображения на этот счет? Поделитесь, пожалуйста, если не сложно)
Айнур Валиев, если проставить AJAX_MODE, то отключится и ajax в умном фильтре) Именно в этом и сложность возникла. То есть надо ajax оставить на умном фильтре и убрать во всем остальном.
Айнур Валиев, нет, Битрикс шлет, так как когда глобально отключаю ajax и подключаю только у умного фильтра, то умный фильтр не работает, как и ajax везде. Просто отдельно ajax от умного фильтра не хочет работать.
Айнур Валиев, насколько знаю, как раз, наоборот. Умный фильтр не работает автономно.
Для эксперимента в Битрикс лаборатории поставил на вызов фильтра все необходимые параметры:
И умный фильтр не заработал. То есть нужно, чтобы Ajax был включен именно у компонента "Каталог", а не просто у умного фильтра. Разные шаблоны тоже пробовал.
po4emu4ka2020, ты просто не хочешь ничего делать. Этот компонент мной уже 100 раз кастомизирован, переделан, как шаблон так и сама логика (красивый урл). Все работает в режиме аякс, ничего не ломает.
вот пример сайта destiny.dev10.ru/catalog/zhestkie_diski_hdd
Айнур Валиев, Вы уверены, что у вас точно все работает на ajax? Просто использование ajax - это когда страница НЕ перезагружается.
У вас сейчас на присланном примере все работает только с перезагрузкой страницы.
po4emu4ka2020, сам умный фильтр работает на аяксе. Выдача результатов - да, с перезагрузкой. Значит я изначально не понял твой вопрос. Примера с выдачей резултьтата на аякс у меня нет .
Айнур Валиев, ничего страшного, бывает. Я просто неправильно выразился, наверное. Бьюсь вот именно над этой проблемой, мне надо, чтобы вся фильтрация происходила на ajax. Нашел в другом вопросе компонент (очищенный каталог) от PetrPo Битрикс умный фильтр AJAX мгновенная фильтрация?
Там оставлен только section и сам фильтр, все работает через ajax. Только я пока еще не уверен, что он мне подойдет, нужно еще несколько моментов проверить. Возможно, найду еще более изящное решение.
po4emu4ka2020, если ты делал пагинацию на аякс, то сможешь тоже самое сделать и для фильтра. При нажатии всплывашки Показать, выдергиваешь ее урл (будет что то типа /apply/filer/color-is-red), делаешь запрос ответ вставляешь в контент. Ответ конечно должен быть без хедер-футера шаблона. Простая проверка на аякс и и вызов RestartBuffer()
вот как пример https://nikolaus.by/blog/programmirovanie/ajax-pod...
po4emu4ka2020, кстати недостаток аякс фильтра в том что урл не подставляется и нельзя открыть заранее подготовленную страницу с фильтрацией. что не есть гуд для sео.
po4emu4ka2020, да, но после перезагрузки фильтрация точно отработает? зависит насколько кастомный у тебя фильтр. Если весь перешит-перекроен, то вряд ли)
Айнур Валиев, конечно, отработает. Ajax же только делает запрос на страницу с нужным URL. А если эта страница с нужным URL не будет выдавать нормальные товары, то она их ни на ajax не выдаст, ни при перезагрузке. Тут либо все работает, либо ничего.
Айнур Валиев, единственное, что мне не нравится при таком подходе, это то, что если я тыкаю несколько опций сразу, то запрос отрабатывает несколько раз. Выглядит стремно. Надо как-то организовать остановку предыдущего запроса, если прилетел новый.