Как перегрузить шаблон при срабатывании AJAX фильтра категории?

MaxB

Проблема следующая:

Имеем категорию с AJAX фильтрами.

В самом верху шаблона category.html стоит инклюд {include file='banner.html'}

При срабатывании AJAX фильтра этот самый banner.html не обновляется.

Как сделать, чтобы он обновлялся как при полноценном релоаде страницы?

Заранее благодарю!

29 июня 2016
  • Александр 30 июня 2016 11:16

    При обращении к action категории приложения Магазин используя AJAX вы получите содержимое шаблона category.html без обвязки, а значит и код баннера так же будет в ответе(ведь он включен в этот шаблон). Вам нужно переписать функцию обработки отправки формы фильтра, а точнее добавить код который будет обновлять нужный вам участок DOM.

  • MaxB 30 июня 2016 18:44

    Александр, большое спасибо.

    Но моей квалификации не хватит это самомму написать. Есть ли какой-нибудь пример для обновления участок DOM ?

  • Александр 1 июля 2016 11:08

    Не видя исходного кода никто вам не поможет, как минимум нужен селектор обновляемого блока. Попробуйте найти пример используя поиск.

    Вам следует сделать примерно следующее, как пример используем часть кода темы оформления Дефолт 3.0:

    $.get(url+'&_=_', function(html) {
    	var tmp = $('<div></div>').html(html);
    	$('#product-list').html(tmp.find('#product-list').html());
    	if (!!(history.pushState && history.state !== undefined)) {
    		window.history.pushState({}, '', url);
    	}
    	$(window).lazyLoad && $(window).lazyLoad('reload');
    });

    в переменной tmp содержится весь HTML код ответа включая и нужный вам блок, по аналогии обновления списка товаров, строка:

    $('#product-list').html(tmp.find('#product-list').html());

    добавляем обновление нашего блока:

    $('селектор моего блока').html(tmp.find('селектор моего блока').html());

    *если баннер содержит какие либо скрипты и требуется их применить, то следует добавить их так же.

    *возможно вам следует просто обратиться к экспертам: https://experts.webasyst.ru/

  • MaxB 1 июля 2016 13:36

    Александр, я Вам ОЧЕНЬ благодарен!

    Спасибо, все получилось!

  • Максим 8 октября 2018 18:23

    Может кто подскажет как инициализировать Slick Slider на странице категори после срабатывания lazyloading в теме Default?

    Вот так в js инициализируется слайдер:

    $('.products-list .item .salesku-feature-select').slick({
          infinite:false,
          slidesToShow: 4,
          arrows: true,
          prevArrow: "<i class='fa fa-angle-left'></i>",
          nextArrow: "<i class='fa fa-angle-right'></i>",
          slidesToScroll: 3
        });

     но после срабатывания фильтров или lazyloading на странице категории, слайдер перестает работать...

  • EnsoStudio 9 октября 2018 11:30

    Максим потому что были загружены элементы у которых это событие не задано, измените вызов lazyload плагина и задайте в опции load функцию с данным кодом.




Чтобы добавить комментарий, зарегистрируйтесь или войдите