1. Первый вариант:
- ставишь bitrix:catalog
- файл sections.php в нем выводишь свой фильтр по разделам (
раздел в фильтре должен быть ссылкой) и catalog.section, перед ним глобальный фильтр по твоему бренду (если не знаешь как, напиши, объясню), у catalog.section указываешь параметры
'INCLUDE_SUBSECTIONS' => 'Y',
'SHOW_ALL_WO_SECTION' => 'Y',
'BY_LINK' => 'Y'
- файл section.php - все тоже самое, только в catalog.section передаешь id раздела, он будет в $arResult['VARIABLES'], добавляешь параметр INCLUDE_SUBSECTIONS если нужен (
2 других параметра не надо)
- в вызове bitrix.catalog на index.php раздела ставишь параметры
'AJAX_MODE' => 'Y',
'AJAX_OPTION_STYLE' => 'Y',
'AJAX_OPTION_HISTORY' => 'Y'
Все остальное на себя возьмет битрикс, единственное все будет работать в режиме ajax, т.е. ссылки на деталку товаров тоже будут грузится ajax-ом, если надо чтобы только твой фильтр по разделам работал ajax-ом, тогда
2. Второй вариант
- примерно как у тебя сейчас, есть обработчик ajax в него передаешь url на текущую страницу и в data передаешь некоторый ключ, например
//.......
url: '<?=$APPLICATION->GetCurDir()?>'
data: {SECTION_ID: idSection, BRAND_AJAX: 'Y'}
//.......
- подставляешь свой SECTION_ID в параметры catalog.section, если он есть в request
- находишь часть контента которую ты хочешь получить обновленную
<?
$request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
$bBrandAjax = $request->isAjaxRequest() && isset($request['BRAND_AJAX']) && $request['BRAND_AJAX'] == 'Y';
?>
<?// оборачиваешь в div для простоты вставки через js, можно поколдовать и сделать без этого контейнера, но тут уже сам))?>
<div id="ajax_brand_container">
<?
if($bBrandAjax) {
$APPLICATION->RestartBuffer();
}
// твой ajax-вый контент (вероятно только catalog.section)
if($bBrandAjax) {
die();
}
?>
</div>
- В onsuccess ajax обработчика пишешь
var ajaxContainer = document.querySelector('#ajax_brand_container');
BX.ajax({
//........
onsuccess: async function(data) {
if(ajaxContainer) {
var obResult = BX.processHTML(data);
await !(function() {
ajaxContainer.innerHTML = data;
})();
BX.ajax.processScripts(obResult.SCRIPT);
}
}
//........
P.S.
Писал без тестирования, попробуй, если будут ошибки пиши...
P.P.S.
при втором варианте я бы посоветовал тоже использовать bitrix.catalog, но тут сам смотри