|
|
24.06.2014, 10:27
|
|
Роман Чудаков
Зарегистрирован: 2014-06-24
Сообщений: 10
|
Всем доброго времени суток!
Прошу помощи тех кто смог реализовать ajax корзину на системе netcat, т.е. добавление товара без перезагрузки системы.
Моя версия e-comerce 5.3. Бьюсь уже четвертый день.
Спасибо.
|
|
|
25.06.2014, 01:09
|
|
Nexwich
Панасин Александр
Зарегистрирован: 2011-04-05
Сообщений: 1037
|
Позвоните в скайп. Попробуем решить вашу задачу
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|
|
|
25.06.2014, 10:26
|
|
Роман Чудаков
Зарегистрирован: 2014-06-24
Сообщений: 10
|
У меня вариантов нет. Все, что нашел не могу закрутить на netcat.
Можете напримере показать код? Кажется на одном из ваших сайтов я видел пример реализации этого (радио пилот, если конечно это на нэткет сделано).
|
|
|
25.06.2014, 13:27
|
|
Роман Чудаков
Зарегистрирован: 2014-06-24
Сообщений: 10
|
Не ужели все пользуются стандартной корзиной?
|
|
|
25.06.2014, 14:17
|
|
Nexwich
Панасин Александр
Зарегистрирован: 2011-04-05
Сообщений: 1037
|
Аякс карзина это легко если знаешь как.
Есть несколько вариантов. Я вам предлагал созвонится чтобы выбрать. Разбирать все не стану. Самый простой вариант это .load(). Разберем на примере предположив что у вас форма(<form>).
Подключите к сайту плагин ajaxForm (http://malsup.github.com/jquery.form.js)
В файле для js кода(если таковой имеется) или на странице вставьте код
Код:<script>
(function($) {
$(function() {
// ajax.Положить в корзину
$('form.ajax').ajaxForm({
success: function(){
$('#id-обертки-заменяемого-блока').load('/ #id-заменяемого-блока')
}
})
});
})(jQuery)
</script>
Таким образом после того как выполнится добавление товара в корзину скрипт обратится на страницу / и возьмет из нее код #id-заменяемого-блока и вставит в #id-обертки-заменяемого-блока
Это лишь пример и все ссылки и код вы можете переписать под себя
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|
|
|
26.06.2014, 13:45
|
|
Роман Чудаков
Зарегистрирован: 2014-06-24
Сообщений: 10
|
Александр, спасибо большое.
Кому интересно, спрашивайте. Выложу вариант
|
|
|
29.06.2014, 14:57
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Роман, Александр привел лишь самый простой и быстрый способ решения вашей задачи, но он достаточно топорный, если так можно выразиться. Если у вас достаточно знаний по ajax-программированию и используете модуль ИМ в версии 5.3, то там предусмотрено в принципе полноценное API для решения вашей задачи, которое и работает пошустрее, и дает больше возможностей.
|
|
|
30.06.2014, 10:24
|
|
Роман Чудаков
Зарегистрирован: 2014-06-24
Сообщений: 10
|
Да,Руслан, у меня есть ИМ в версии 5.3.
В скорости я не вижу задержки.
А вот знания по ajax-программированию слабоватые.
Можете развернуто представить вариант? Думаю многим, а также самим разработчикам будет интересно
|
|
|
02.07.2014, 09:22
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
В скорости задержка будет видна на медленном интернете.
По альтернативному варианту боюсь не найду времени рассказать все подробно.
Могу только наводку дать - надо в корзину передавать параметр json=1, тогда обработчик корзины будет выдавать ответ в компактном json-формате и не потребуется грузить всю страницу через $.load.
|
|
|
10.08.2014, 10:45
|
|
Макс
Зарегистрирован: 2013-05-27
Сообщений: 5
|
Цитата:Александр, спасибо большое.
Кому интересно, спрашивайте. Выложу вариант
Интересно посмотреть, Роман! Занялся этим вопросом, но непонятно про Код: $('#id-обертки-заменяемого-блока').load('/ #id-заменяемого-блока')
Знаний по ajax у меня нет и хотелось бы узнать, можно ли прикрутить к корзине готовый код? Корзина обычная из модуля "Интернет-магазин".
madeo
|
|
|
10.08.2014, 11:37
|
|
Nexwich
Панасин Александр
Зарегистрирован: 2011-04-05
Сообщений: 1037
|
Вам предоставлен готовый код. Который работает без каких либо дополнений и которого хватит на первое знакомство. Но вы все равно продолжаете искать решение. Странные люди.
Подключите к сайту скрипт http://malsup.com/jquery/form/
Данный код только для корзины Интернет-магазина от 5.3. А тот что выше универсален и будет работать в любой системе управления и даже не в системе.
Код: // ajax.В корзину
if($('form.ajax-in-cart').length){ // Если есть форма добавления в корзину
$('body').on('submit','form.ajax-in-cart',function(){ // Событие.Отправка формы
$(this).ajaxSubmit({
data:{json:1}, // Дополнительные параметры
error: alert('error'), // Эту часть кода не обязательна и ее возможно удалить
success: function(responseText, statusText, xhr, $form){
if(responseText) obj = $.parseJSON(responseText)
else return false
// Замена
$('#cart-count').text(obj.TotalItemCount) // Замена содержимого тега с ID cart-count
$('#cart-price').text(obj.TotalItemPrice) // Замена содержимого тега с ID cart-price
// Далее если нужно свой код добавляете или изменяете уже имеющийся
})
return false // Чтобы страница не перезагружалась
})
}
body - В идеале укажите что-нибудь поближе к кнопке в корзину, но что не будет точно подгружаться аяксом например тег обертки всех товаров (.catalog). Не нужно доводить то фанатизма.
ajax-in-cart - данный класс добавьте к тегу формы которая будет отвечать за добавление товара в корзину. Название класса вы вольны выбирать сами но не забывайте про совпадения в коде формы и js.
if(responseText) obj = $.parseJSON(responseText) - Это код преобразование ответа в json объект (получается массив из которого можно выбирать значения) Пример obj.TotalItemCount - выведет количество объектов в корзине
Параметры которые передаются при ответе. Они описаны в файле /netcat/modules/netshop/actions/cart.php в верху
Код: {
QuantityNotifications: сообщения о невозможности добавить выбранное
количество товара в корзину. Объект, ключ — "ID_компонента:ID_товара"
Message: текст сообщения
RequestedQty: запрошенное количество
Items: информация о товарах в корзине. Объект, ключ — "ID_компонента:ID_товара"
Class_ID: ID компонента
Message_ID: ID объекта
Name: название товара
VariantName: название варианта товара
Vendor: производитель
FullName: полное наименование (Vendor + Name + VariantName)
Image: путь к картинке, указанной в поле Image
ItemPrice: цена со скидкой, float
ItemPriceF: цена со скидкой, отформатированная
OriginalPrice: цена без скидки, float
OriginalPriceF: цена без скидки, отформатированная
Qty: количество
TotalPrice: стоимость со скидкой, float
TotalPriceF: стоимость со скидкой, отформатированная
ItemDiscount: скидка на 1 шт. товара, float
ItemDiscountF: скидка на 1 шт. товара, отформатированная
DiscountPercent: процент скидки
TotalDiscount: общая скидка на позицию, float
TotalDiscountF: общая скидка на позицию, отформатированная
URL: путь к странице товара
TotalItemPrice: стоимость товаров со скидками, float
TotalItemPriceF: сумма товаров со скидками, отформатированная
TotalItemOriginalPrice: сумма товаров без скидок, float
TotalItemOriginalPriceF: сумма товаров без скидок, отформатированная
TotalCount: количество наименований товаров в корзине
TotalItemCount: количество товаров в корзине
TotalItemDiscountSum: сумма скидок, float
TotalItemDiscountSumF: сумма скидок, отформатированная
// для совместимости с предыдущими версиями:
cart_sum: сумма покупки со скидками
cart_count: количество товаров в корзине
cart_discount_sum: сумма скидок
}
Параметр json не передавайте через форму иначе он будет передавать даже тем у кого отключен js, что пагубно может сказаться на добавлении товаров в корзину.
Код будет работать даже при условии что формы генерируется при помощи js. Например если вы подгружаете товары при прокрутке страницы ajax'ом
На самом деле ajax достаточно прост как в освоении так и в использовании. Вам нужно лишь немного практики. Советую для того чтобы научится составлять скрипты jQuery использовать карту функция(хотя правильно назвать карта методов) на сайте http://jquery.page2page.ru/index.php5/Заглавная_страница
Если у кого остались вопросы прошу ко мне в скайп (загляните в профиль) и там я постараюсь объяснить подробнее возникающие у вас проблемы. Даже если вы читаете это уже спустя 2 года после публикации, то мне можно все еще позвонить.
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|