Вызов msCart через ajax и совместно с msMiniCart
Проблемная страничка new.kami-kadze.ru/sets/
Собственно имеем:
На странице по умолчанию вызывается только msMiniCart.
При клике на msMiniCart аяксом в попап подгружается msCart. В DOM отлично встраивается элемент с id=«msCart» и правильным содержимым корзины.
Однако при добавлении новых товаров обновляется только миникорзина. Содержимое полной корзины не меняется.
Пробовал вызов без аякса — аналогичная проблема.
Перерыл все похожие вопросы и ничего не решилось
Собственно имеем:
На странице по умолчанию вызывается только msMiniCart.
При клике на msMiniCart аяксом в попап подгружается msCart. В DOM отлично встраивается элемент с id=«msCart» и правильным содержимым корзины.
Однако при добавлении новых товаров обновляется только миникорзина. Содержимое полной корзины не меняется.
Пробовал вызов без аякса — аналогичная проблема.
Перерыл все похожие вопросы и ничего не решилось
Комментарии: 11
У тебя большая корзина загружается только один раз, а потом modal ее кэширует. Это хорошо видно по запросам в консоли браузера.
Да и в документации описано:
Да и в документации описано:
If a remote URL is provided, content will be loaded one time via jQuery's load method and injected into the .modal-content div.Так что, нужно загружать своим скриптом, вручную вызывая modal.
Это да. modal встроил элемент в DOM при первом клике. Дальше хочется чтоб его уже обновлял минишоп. Или я слегка преувеличиваю возможности аякс обновления msCart?
В корзине есть изменение количества и удаление товаров.
Добавления товаров там никогда не было.
Добавления товаров там никогда не было.
хм. заменил на подгрузку через colorbox, который не кеширует ajax запрос и получилось то что хотел.
Для тех кто столкнется решение просто:
js
ну и ресурс (у меня 23) — пустой шаблон с содержимым
Для тех кто столкнется решение просто:
js
$(document).ready(function () {
$(".ajax").colorbox();
});
чанк msMiniCart<div id="msMiniCart" [[+total_count:isnot=`0`:then=`class="full"`:else=``]]>
<div class="empty">
<h4> Корзина: [[%ms2_minicart_is_empty]]</h4>
</div>
<div class="not_empty">
<a class='ajax' href="[[~23]]"><h4>Корзина: <strong class="ms2_total_count">[[+total_count]]</strong> шт. - <strong class="ms2_total_cost">[[+total_cost]]</strong> р.</h4></a>
</div>
</div>
ну и ресурс (у меня 23) — пустой шаблон с содержимым
[[!msCart?]][[!msOrder?]]
У нас что-то подобное в магазине, только вручную прописан
$.post запрос при клике по ссылке, ответ вставляется div и на него вызывается modal().
В общем, молодец!
$.post запрос при клике по ссылке, ответ вставляется div и на него вызывается modal().
В общем, молодец!
Всё же одна проблема осталась — количество товаров не меняется в msCart. Хотя удаляется отлично (js). Что я напутал?
Как заметил работает если набрать число и нажать энтер. Видимо не навешивается какая-то функция на событие… Подскажи, какое событие и функция?
Скрипт пытается инициализировать корзину сразу после загрузки страницы, когда её еще нет у тебя в DOM:
,initialize: function() {
miniShop2.Cart.setup();
if (!$(miniShop2.Cart.cart).length) return; // Вот здесь скрипт и выходит
// А вот это событие на изменение кол-ва товара
miniShop2.$doc.on('change', miniShop2.Cart.cart + ' ' + miniShop2.Cart.countInput, function() {
$(this).closest(miniShop2.form).submit();
});
}
Нужно навешать это событие вручную, или вызвать miniShop2.Cart.initialize() после первой загрузки корзины.
Огромное спасибо.
Реализовал:
Реализовал:
$(".ajax").colorbox({
onComplete:function(){ miniShop2.Cart.initialize(); },
});
+ отправил спасибо )
Я сейчас пишу для себя подобный скрипт со всплывающей корзиной. Столкнулся с той же проблемой, что есть и у тебя. Если добавить товар в корзину, (открыть всплывающую корзину потом закрыть)*(повторить раз пять), а потом изменить во всплывающей корзине кол-во товара, начинается какафония из jGlowl.
Я так понимаю создаются дубликаты miniShop2.Cart.initialize();? Вот как исправить – вопрос :) Василий, поможешь?
Скрин:
yadi.sk/d/a2ig2tsPKJGKk
Я так понимаю создаются дубликаты miniShop2.Cart.initialize();? Вот как исправить – вопрос :) Василий, поможешь?
Скрин:
yadi.sk/d/a2ig2tsPKJGKk
Разобрался. При закрытии окна делаю так:
miniShop2.Cart.initialize = null;
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.