Битрикс: умный фильтр (catalog.smart.filter)

Случилось так что все было вроде настроено верно, а фильтр через ajax нормально работать не хотел, то есть он срабатывал только первый раз, а на второй перезагружал страничку полностью. Решений по этой проблеме я нашёл только одно.
Однако оно было с внесением изменений в файлы ядра и с обновлением все бы пропало.
Причина не работы фильтра была в том что загружаемый код был без вставок js (как это сказано в статье по ссылке выше). Соответственно что бы решить надо самому привязывать событие на submit следующий код надо добавить в template.php в самом конце:


<script>
 filter_ajax_bind = function() {
  var bxajaxid = document.getElementsByName('bxajaxid')[0];
  window.filter = {
     bxajaxid : bxajaxid.id
   , bxajaxvalue : bxajaxid.value
  };

  function _processform_8BACKi(){
   var obForm = top.BX(window.filter.bxajaxid).form;
   top.BX.bind(obForm, 'submit', function() {BX.ajax.submitComponentForm(this, 'comp_' + window.filter.bxajaxvalue, true); filter_ajax_bind(); });
   top.BX.removeCustomEvent('onAjaxSuccess', _processform_8BACKi);
  }

  if (top.BX(window.filter.bxajaxid))
   _processform_8BACKi();
  else
   top.BX.addCustomEvent('onAjaxSuccess', _processform_8BACKi);
 }

 window.onload = filter_ajax_bind();
</script>

Комментарии

Популярные сообщения из этого блога

Bitrix: кнопка добавить в корзину

Битрикс: какого х*я ты ищешь в неактивных разделах

Битрикс: highloadblock значения в свойстве список