mSearch2 при ajax подргузке товаров, не грузится слайдер для погрузившихся товаров.
Подскажите плиз кто сталкивался с подобным как решили или может есть мысли какие-то как решить данную проблему. Не работает подгрузка слайдера msGallery в превью товара когда подгружаю через Ajax.
Вывожу товары вот так:
[[!mFilter2?
&limit=`999`
&parents=`38`
&element=`msProducts`
&tpls=`tpl.msProducts.row.common-load`
&includeThumbs=`small`
&includeContent=`1`
&class=`msProduct`
&optionFilters=`{
"status-public:LIKE":"в продаже"
}`
&sort=`createdon:desc`
&tplOuter=`tpl.filter-out.common-admin`
&aliases=`
msoption|object_type==object_type,
`
&filters=`
msoption|object_type:checkbox,
msoption|street-name:checkbox,
msoption|cian-on:checkbox,
msoption|avito-on:checkbox,
msoption|adstatus_avito:checkbox,
msoption|ServicesEnum:checkbox,
msoption|ipoteka:checkbox,
msoption|bedroom:checkbox,
msoption|decoration:checkbox,
msoption|in-home:checkbox,
createdby:fullname,
`
&tplFilter.outer.msoption|object_type=`tpl.mFilter2.filter.outer5-type-objects2`
&tplFilter.outer.msoption|street-name=`tpl.mFilter2.filter.outer5-street`
&tplFilter.row.msoption|street-name=`tpl.mFilter2.filter.checkbox5-street`
&tplFilter.outer.msoption|adstatus_avito=`tpl.mFilter2.filter.outer2_avito`
&tplFilter.row.msoption|adstatus_avito=`tpl.mFilter2.filter.checkbox2_avito`
&tplFilter.outer.msoption|ServicesEnum=`tpl.mFilter2.filter.outer2_cian`
&tplFilter.row.msoption|ServicesEnum=`tpl.mFilter2.filter.checkbox2_cian`
&tplFilter.outer.msoption|ipoteka=`tpl.mFilter2.filter.outer2-ipoteka`
&tplFilter.row.msoption|ipoteka=`tpl.mFilter2.filter.checkbox2-ipoteka`
&tplFilter.outer.msoption|bedroom=`tpl.mFilter2.filter.outer4`
&tplFilter.row.msoption|bedroom=`tpl.mFilter2.filter.checkbox4`
&tplFilter.outer.msoption|decoration=`tpl.mFilter2.filter.outer2`
&tplFilter.row.msoption|decoration=`tpl.mFilter2.filter.checkbox2`
&tplFilter.outer.msoption|in-home=`tpl.mFilter2.filter.outer2_home`
&tplFilter.row.msoption|in-home=`tpl.mFilter2.filter.checkbox2_home`
&tplFilter.outer.msoption|cian-on=`tpl.mFilter2.filter.outer2_cian-on`
&tplFilter.row.msoption|cian-on=`tpl.mFilter2.filter.checkbox2`
&tplFilter.outer.msoption|avito-on=`tpl.mFilter2.filter.outer2_avito-on`
&tplFilter.row.msoption|avito-on=`tpl.mFilter2.filter.checkbox2`
&ajaxMode=`scroll`
&maxLimit=`10`
&filterOptions=`{
"more_tpl": "<button class=\"btn btn-default btn_more btn-see-more items-middle\"><span class=\"flaticon-add-3\"></span>
<span>Показать еще</span></button>",
"selected_tpl": "<a href=\"#\" data-id=\"_id_\" class=\"mse2_selected_link search-hashtags-item flex items-middle\"><div class=\"title\">_title_</div><div class=\"small-close\"></div></a>",
"selected_wrapper_tpl": "",
"selected_filters_delimeter": "",
"selected_values_delimeter": ""
}`
]]
В чайке вывожу слайдер через msGallery. В первичных результатах все отображается и работает нормально, когда подгружаю через Ajax вот так &ajaxMode=`scroll` или вот так &ajaxMode=`default`, слайдер перестает работать в погрузившихся результатах. Это же касается и вывода iframe в модальном окне вызовом по ссылке, ситуация идентичная. Куда посмотреть? Что упустил или как исправить? Спасибо, хорошего всем дня!
Комментарии: 9
Смотреть в документацию и перезапускать ваши скрипты после срабатывания фильтров
Спасибо за ответ. Подскажите, мне необходимо что-то дописать в js файл чтобы перезапускать скрипты после срабатывания фильтров? Или по документации внести какую-то настройку в mFilter2?
Да, вам нужно перезапускать скрипт слайдера после загрузки результатов фильтрации
$(document).on('mse2_load', function(e, data) {
// вот тут нужно перезапустить скрипт управляющий слайдером
});
Можете помочь? Подсказать что писать в закомментировали вами строчке. В js не силён совсем. Путь есть к скрипту например.
<script src=“/assets/js/script.js”></script>
Если не сложно. Спасибо большое за ответы.
Нужно открыть документацию к слайдеру и найти метод отвечающий за его перезапуск. Потом вместо комментария вставить вызов этого метода на каждом слайдере.
Ок. Тогда на примере.
У меня слайдер tiny-slider
Я в каждом чанке слайдера товара создаю скрипт
Понимаю что это бред, который не работает в данный момент. Но пытаюсь нащупать истину.
Поправьте меня пожалуйста.
У меня слайдер tiny-slider
Я в каждом чанке слайдера товара создаю скрипт
<script>
$(document).on('mse2_load', function(e, data) {
updateSliderHeight: updateInnerWrapperHeight(),
});
</script>
Понимаю что это бред, который не работает в данный момент. Но пытаюсь нащупать истину.
Поправьте меня пожалуйста.
Здравствуй, удалось решить?
Здравствуйте, нет. Самостоятельно попробовал все способы какие считал максимально подходящими, не заработало. Никто так и не показал наглядного примера как это сделать. Если решите, буду благодарен за подсказку.
На моем сайте установлен slick slider, я просто перед закрывающим тегом body вызываю 2 раза так:
/* Несколько slick слайдеров на одной странице */
$('.led-grid').each(function(){
/* Основной слайдер */
$(this).find('.slider-for').slick({
slidesToShow: 1,
slidesToScroll: 1,
arrows: false,
fade: true,
autoplay: true,
autoplaySpeed: 8000,
asNavFor: $(this).find('.slider-nav'),
dots: false
});
/* Связанный слайдер */
$(this).find('.slider-nav').slick({
slidesToShow: 3,
slidesToScroll: 1,
asNavFor: $(this).find('.slider-for'),
dots: false,
centerMode: true,
focusOnSelect: true,
arrows : false
});
});
</script>
<script>
/* Несколько slick слайдеров на одной странице совместно с фильтрами и пагинацией*/
$(document).on('mse2_load', function(e, data) {
$('.led-grid').each(function(){
/* Основной слайдер */
$(this).find('.slider-for').slick({
slidesToShow: 1,
slidesToScroll: 1,
arrows: false,
fade: true,
autoplay: true,
autoplaySpeed: 8000,
asNavFor: $(this).find('.slider-nav'),
dots: false
});
/* Связанный слайдер */
$(this).find('.slider-nav').slick({
slidesToShow: 3,
slidesToScroll: 1,
asNavFor: $(this).find('.slider-for'),
dots: false,
centerMode: true,
focusOnSelect: true,
arrows : false
});
});
});
</script>
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.