Регистрация
Вход через соцсети
Восстановление пароля

Ajax корзина

Новый топик
Страницы: 1  |  2
24.06.2014, 10:27
Ответить | Цитировать
Роман Чудаков

Зарегистрирован:
2014-06-24
Сообщений: 10

Всем доброго времени суток!

Прошу помощи тех кто смог реализовать ajax корзину на системе netcat, т.е. добавление товара без перезагрузки системы.
Моя версия e-comerce 5.3. Бьюсь уже четвертый день.
Спасибо.
25.06.2014, 01:09
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

Позвоните в скайп. Попробуем решить вашу задачу

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
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
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

Аякс карзина это легко если знаешь как.

Есть несколько вариантов. Я вам предлагал созвонится чтобы выбрать. Разбирать все не стану. Самый простой вариант это .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-обертки-заменяемого-блока
Это лишь пример и все ссылки и код вы можете переписать под себя

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
26.06.2014, 13:45
Ответить | Цитировать
Роман Чудаков

Зарегистрирован:
2014-06-24
Сообщений: 10

Александр, спасибо большое.
Кому интересно, спрашивайте. Выложу вариант
29.06.2014, 14:57
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

Роман, Александр привел лишь самый простой и быстрый способ решения вашей задачи, но он достаточно топорный, если так можно выразиться. Если у вас достаточно знаний по ajax-программированию и используете модуль ИМ в версии 5.3, то там предусмотрено в принципе полноценное API для решения вашей задачи, которое и работает пошустрее, и дает больше возможностей.

30.06.2014, 10:24
Ответить | Цитировать
Роман Чудаков

Зарегистрирован:
2014-06-24
Сообщений: 10

Да,Руслан, у меня есть ИМ в версии 5.3.
В скорости я не вижу задержки.
А вот знания по ajax-программированию слабоватые.
Можете развернуто представить вариант? Думаю многим, а также самим разработчикам будет интересно
02.07.2014, 09:22
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

В скорости задержка будет видна на медленном интернете.
По альтернативному варианту боюсь не найду времени рассказать все подробно. грустный
Могу только наводку дать - надо в корзину передавать параметр json=1, тогда обработчик корзины будет выдавать ответ в компактном json-формате и не потребуется грузить всю страницу через $.load.

10.08.2014, 10:45
Ответить | Цитировать
Макс

Зарегистрирован:
2013-05-27
Сообщений: 5

Цитата:
Александр, спасибо большое.
Кому интересно, спрашивайте. Выложу вариант


Интересно посмотреть, Роман! Занялся этим вопросом, но непонятно про
Код:
 $('#id-обертки-заменяемого-блока').load('/ #id-заменяемого-блока')

Знаний по ajax у меня нет и хотелось бы узнать, можно ли прикрутить к корзине готовый код? Корзина обычная из модуля "Интернет-магазин".

madeo
10.08.2014, 11:37
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

Вам предоставлен готовый код. Который работает без каких либо дополнений и которого хватит на первое знакомство. Но вы все равно продолжаете искать решение. Странные люди.

Подключите к сайту скрипт 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 года после публикации, то мне можно все еще позвонить.


Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
198 196 2014-08-10 16:28:40 13711
Страницы: 1  |  2
Описание проекта