Нам нужно обновлять списки поиска bitrix:catalog через ajax. Но не хочется использовать AJAX_MODE=Y .
catalog.smart.filter — ajax обновление списка без AJAX_MODE=N
Ищем файл js, который может называться bitrix_smart_filter_ajax.js , может и таким /bitrix/catalog.smart.filter/вашшаблон/script.js
В шаблоне bitrix:catalog.smart.filter редактируем script.js — ищем функцию JCSmartFilter.prototype.postHandler и редактируем следующее:
1 2 3 4 5 6 7 8 9 10 11 12 |
//if (modef.style.display === 'none') //{ // modef.style.display = 'inline-block'; //} $.get( result.FILTER_AJAX_URL, function (data) { $('.catalog-list').html($(data).find('.catalog-list').html()); } ); history.pushState(null, null, result.FILTER_AJAX_URL); |
Элемент находим в section_vertical.php
1 2 3 4 |
$intSectionID = $APPLICATION->IncludeComponent( "bitrix:catalog.section", .... ); |
и его обрамляем (если не обрамлен)
1 2 3 4 5 6 |
echo '<div class="catalog-list">'; $intSectionID = $APPLICATION->IncludeComponent( "bitrix:catalog.section", .... ); echo '</div>'; |
Далее привязываем ajax пагинацию к нашей системе . Сразу за этими div прописываем код ниже .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<script> $(document).on("click", '.catalog-list .numbers a', function (e) { e.preventDefault(); // alert(2); var href=$(this).attr('href'); history.pushState(null, null, href); $.get( href, function (data) { $('.catalog-list').html($(data).find('.catalog-list').html()); } ); }); </script> |
Код $(‘.catalog-list’).html($(data).find(‘.catalog-list’).html()); работает так:к нам приходит всся html страница(текст) и загружается в переменную $data. Внутри переменной мы находим блок с классом catalog-list и забираем все его содержимое. В этом содержимом содержится список элементов и пагинация. Теперь этим содержимым переписываем div c классом .catalog-list.