Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ibadin/07138ac0f82b18d7eeeb05861c614789 to your computer and use it in GitHub Desktop.
Save ibadin/07138ac0f82b18d7eeeb05861c614789 to your computer and use it in GitHub Desktop.
catalog.smart.filter - ajax обновление списка без AXAJ_MODE
// В шаблоне bitrix:catalog.smart.filter редактируем script.js - ищим функцию JCSmartFilter.prototype.postHandler и редактируем следующее
//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());
}
);
// .catalog-list - селектор который необходимо обновить. Естественно jQuery должен быть подключен.
@ibadin
Copy link
Author

ibadin commented Aug 16, 2022

Для любителей vanilajs:
Дописываем метод в прототип JCSmartFilter для поиска в куске html нужногой ноды (это делает код с jquery выше: $(data).find('.catalog-list')):

JCSmartFilter.prototype.findSelectorInHtml = function(html, selector){
	var wrapperNode = document.createElement('div');
	wrapperNode.innerHTML = html;

	return wrapperNode.querySelector(selector);
}

В JCSmartFilter.prototype.postHandler в ветку else там где if (result.INSTANT_RELOAD && result.COMPONENT_CONTAINER_ID)
пишем:

var self = this;
url = BX.util.htmlspecialcharsback(result.FILTER_AJAX_URL);
BX.ajax.get(url, function(data) {
	var tableWrapper = document.querySelector('.products__wrapper');
	var newTableWrapper = self.findSelectorInHtml(data, '.products__wrapper');
	tableWrapper.innerHTML = newTableWrapper.innerHTML
});

Где .products__wrapper – ваша обертка для списка товаров

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment