Переход в корзину после добавления товара
Доброго времени суток! открыл файл /assets/components/minishop2/js/web/default.js
нашел там
вставил
нашел там
switch (self.sendData.action) {
case 'cart/add':
miniShop2.Cart.add();
break;
case 'cart/remove':
miniShop2.Cart.remove();
break;
case 'cart/change':
miniShop2.Cart.change();
break;
case 'cart/clean':
miniShop2.Cart.clean();
break;
case 'order/submit':
miniShop2.Order.submit();
break;
case 'order/clean':
miniShop2.Order.clean();
break;
default:
return;
}вставил
$.post(miniShop2Config.actionUrl, params, function(response) {
if (response.success) {
document.location.href = '/cart.html';
}
else {
miniShop2.Message.error(response.message);
}
}, 'json')но у меня все равно ничего не происходит уже второй день голову ломаю, что я не так сделал? Комментарии: 33
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Собственно MS2 активно их использует.
Рекомендую.
Например для события корзины есть
используйте нужный вам, и напишите простой forward.
А default.js перезапишется с первым же обновлением
Конечно — путь Вам вот сюда!
rtfm.modx.com/revolution/2.x/developing-in-modx/basic-development/plugins
Расширь метод miniShop2.Cart.add(); и будет счастье тебе, но я например для безусловной переадресации (т.е никаких popup итп ) юзал бы плагин, так проще мне кажется, хотя кому как
хз, выйдет ли оно мне боком, но пока работает! Никаких правок в скриптах, плагинах и функционал кнопки «добавить в корзину» не слетает!
при кликании на кнопку «В корзину» ничего не происходит. Ну, в смысле, что товар вроде как добавляется, но остаемся на странице с товаром. Правда, она перезагружается первый раз. При последующих нажатиях перезагрузки не происходит, а справа в углу выскакивает окошечко зеленое, что товар добавился.
Если делаю по способу Виктора, т.е. навешиваю на кнопку «В корзину» событие onclick, то при первом кликании точно так же просто страница с товаром перезагружается. А при повторном кликании уже переходим на нужную страницу, т.е. в корзину.
и чего не так-то?
P.S. и подключается он там только после первого кликания на кнопку «В корзину»
p.s. с "});" сам разберешься, в коде выше лишние скобки…
ссылка доп. modx.pro/help/5175/
при первой загрузке страницы ругается «ReferenceError: miniShop2 is not defined». Т.е. на кнопку «Добавить в корзину» надо кликнуть два раза, чтобы сработало. Только тогда происходит переход в корзину. Но, тогда там уже два товара вместо одного :-((
1. Василий сам рекомендует размещать этот код вначале страницы
2. минишоповский скрипт default.js самостоятельно подключается после первого клика на кнопку «Добавить в корзину». При попытке его подключения вверху до нашего кода до первого клика вываливается ошибка «ReferenceError: miniShop2Config is not defined». После первого клика внизу страницы default.js подключается еще раз. Так что картина не меняется.
Создается впечатление, что до первого клика браузер не догадывается, что у нас установлен минишоп. А после первого клика всё приходит в норму
1. Код я копировал у Василия
2. Судя по поведению страницы, браузер сам догадывается, что там должно быть href написано
3. Спасибо, за подсказку. Дописал href
4. Легче, правда, все равно не стало :-)
Что теоритеская база слабовата. Во-первых, минишоповский скрипт подключается при загрузке страницы. Во-вторых, если загуглите ошибку, то убедитесь в том, что она была вызвана тем, что нельзя необъявленному объекту присвоить метод. То есть, указанный вами скрипт выполняется раньше подключения минишоповского скрипта, в котором, собственно этот объект и задан. В-третьих, имеет смысл разобраться в том, что в вашем коде написано. В нем указано то, что в случае Успешного выполнения АЯКС запроса на добавление в корзину, сразу после НЕГО должен будет происходить редирект на строчку корзины.
А теперь внимание вопрос: почему у вас получается так, как получается? То, что во время загрузки окна редирект не назначился ещё не означает то, что и минишоповский скрипт не повесил на кнопку добавления в корзину выполнение своего АЯКС запроса. При первом нажатии именно добавление АЯКСевское и происходит, но вы просто этого не видите. Другой вопрос, что что-то повторно запускает все то, что было повешено на window.load и в том числе и ваш скрипт, который, уже существующему объекту miniShop2, назначает редирект после успешного добавления в корзину, что собственно и происходит во время второго нажатия и, как следствие, повторного добавления в корзину.
так получается, что в одном месте мы сильно упрощаем задачу: убираем класс ms2_form, но при этом сами себе усложняем жизнь тем, что из-за этого приходится писать плагин в корзине
Да и ещё, в отличии от варианта с переадресацией через js, у этого способа есть два плюса:
1) Универсальность. Без проблем можно сделать, чтобы одни товары АЯКСом добавлялись без перехода в корзину, а другие наоборот с переходом, даже если оба варианта одновременно будут находиться на одной страничке. Поведение будет зависеть только от наличия класса ms2_form у формы.
2) Накосячить сложнее новичкам будет, чтобы это все не работало. Callback — это очень крутая фишка в JavaScript, но без базы знаний одна ошибка и море вопросов.
страница не грузится с формулировкой «Неверное перенаправление» :-(