Coffee (03 Март 2015 - 18:24) писал:
Привет, друзья! Как вы прекрасно помните я люблю модальные окна
недавно перейдя на новый шаблон "Нефрит" я внедрил их, конечно же, первым делом. Но при установке возникли трудности: окно ничего не отправляло в корзину. Я пытался аж в двух темах (
первая,
вторая) достучаться до службы поддержки, но безрезультатно, а судя по тому, что незаменимый сотрудник под никнеймом
Cake заходил последний раз в конце 2014 года, стало понятно, что помочь некому.
Мои модальные окна пока что на одном из видов каталога (списком)
Тем не менее, установить модальное окно получилось самостоятельно и оно выполняет свои
бесценные функции: выбор модификации, изменение кол-ва и отправка в корзину. Одно не выходит — это сообщение пользователю об удачной операции, вместо чего выскакивает:
"The requested content cannot be loaded.
Please try again later."
, что в контексте html звучит как:
<div style="overflow: hidden; width: 291px; height: auto;" class="fancybox-inner">
<p class="fancybox-error">The requested content cannot be loaded.<br>Please try again later.</p>
</div>
Короче ошибка фансибокс
Привожу реализацию отправки в корзину:
$('.arcticmodal-container .add-cart') .removeAttr('onclick') .click(function () {
var form = $(this) .closest('form');
$.post(form.attr('action'), form.serializeArray(), function (html, textStatus, jqXHR) {
var success = function (content) {
$('.cart-header:first').html($(content).find('.cart-header:first').html());
var message = $(content) .find('.messages');
if (message.length && message.find('.success') .length) {
$('.arcticmodal-close') .trigger('click');
}
$.fancybox({
content: message
});
setTimeout(function () {
if ($('.fancybox-inner .messages') .length) {
$('.fancybox-close') .trigger('click');
}
}, 500);
};
if (html.indexOf('window.location') !== -1) {
$.get('/cart', $.proxy(function(success, html) {
success(html);
}, this, success));
} else {
success(html);
}
});
return (false);
});
}
Где
content: message — это как раз то самое сообщение, которое должно выводить удачную отправку в корзину
Вопрос: как мне сделать сообщение пользователю подобно тому, как это происходит в карточке товара, а именно как на втором прикреплённом скрине (в вашей корзине... на сумму... перейти... продолжить...). Спасибо за помощь, очень надеюсь на вас!
Здравствуйте!
В main.js найдите код:
function QuickLook(url)
{
jQuery.ajax({
type: 'POST',
cache: false,
url: url,
data: {
only_body: 1
},
success: function (data)
{
var c = $('<div class="box-modal" />');
c.html(data);
c.prepend('<div class="box-modal_close arcticmodal-close">X</div>');
$.arcticmodal({
content: c,
afterOpen: function () {
var
// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
goodsDataProperties = $('.arcticmodal-container form.goodsDataForm select[name="form[properties][]"]'),
// Запоминаем блоки с информацией по модификациям, для ускорения работы
goodsDataModifications = $('.arcticmodal-container div.goodsDataMainModificationsList');
updateEventGoodsProperties(goodsDataProperties, goodsDataModifications);
addQtyButtonEvent();
addFastViewCartButton();
}
});
}
});
}
и замените его на:
function QuickLook(url)
{
jQuery.ajax({
type: 'POST',
cache: false,
url: url,
data: {
only_body: 1
},
success: function (data)
{
var c = $('<div class="box-modal" />');
c.html(data);
c.prepend('<div class="box-modal_close arcticmodal-close">X</div>');
$.arcticmodal({
content: c,
afterOpen: function () {
$('.add-cart').click( function() {
console.log(1)
var form = $(this).closest('form');
if ($(this).hasClass('quick')) {
form.attr('rel', 'quick');
} else {
var rel = form.attr('rel');
if (rel) {
form.attr('rel', rel.replace('quick', ''));
}
}
form.trigger('submit');
return (false);
});
$('.goodsDataForm').submit(function() {
// Выносим функции из шаблонов
if ($(this).attr('rel') === 'quick') {
quickorder(this);
return (false);
}
// Находим форму, которую отправляем на сервер, для добавления товара в корзину
var formBlock = $($(this).get(0));
var adresCart = '/cart';
// Проверка на существование формы отправки запроса на добавление товара в корзину
if (1 > formBlock.length || formBlock.get(0).tagName != 'FORM') {
alert('Не удалось найти форму добавления товара в корзину');
return false;
}
// Получаем данные формы, которые будем отправлять на сервер
var formData = formBlock.serializeArray();
// Сообщаем серверу, что мы пришли через ajax запрос
formData.push({name: 'ajax_q', value: 1});
// Так же сообщим ему, что нужно сразу отобразить форму быстрого заказа
//formData.push({name: 'fast_order', value: 1});
// Аяксом добавляем товар в корзину и вызываем форму быстрого заказа товара
$.ajax({
type: "POST",
cache: false,
url: formBlock.attr('action'),
data: formData,
success: function(data) {
w = $(window).width();
if (w > 480) {
$.fancybox({
content: data
// При изменении размера окна изменяем размер окна оформления заказа
, onUpdate: function() {
return false;
}
});
} else {
if (confirm('Товар был добален в корзину! Перейти в корзину?')) {
window.location.href = adresCart;
}
;
}
setTimeout(function() {
$.fancybox.update();
}, 500);
}
});
return false;
});
var
// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
goodsDataProperties = $('.arcticmodal-container form.goodsDataForm select[name="form[properties][]"]'),
// Запоминаем блоки с информацией по модификациям, для ускорения работы
goodsDataModifications = $('.arcticmodal-container div.goodsDataMainModificationsList');
updateEventGoodsProperties(goodsDataProperties, goodsDataModifications);
addQtyButtonEvent();
}
});
}
});
}
Там же удалите код:
function addFastViewCartButton()
{
$('.arcticmodal-container .add-cart') .removeAttr('onclick') .click(function () {
var form = $(this) .closest('form');
$.post(form.attr('action'), form.serializeArray(), function (html, textStatus, jqXHR) {
var success = function (content) {
$('.cart-header:first').html($(content).find('.cart-header:first').html());
var message = $(content) .find('.messages');
if (message.length && message.find('.success') .length) {
$('.arcticmodal-close') .trigger('click');
}
$.fancybox({
content: message
});
setTimeout(function () {
if ($('.fancybox-inner .messages') .length) {
$('.fancybox-close') .trigger('click');
}
}, 500);
};
if (html.indexOf('window.location') !== -1) {
$.get('/cart', $.proxy(function(success, html) {
success(html);
}, this, success));
} else {
success(html);
}
});
return (false);
});
}
Затем в шаблоне "Ajax добавление товара в корзину" найдите строку:
<button type="button" title="Перейти в корзину" class="btn btn-success2 nyroModalClose"><span><span>Продолжить покупки</span></span></button>
и замените её на:
<button type="button" title="Перейти в корзину" class="btn btn-success2 nyroModalClose" onclick="$.fancybox.close();"><span><span>Продолжить покупки</span></span></button>