Если взять 2 основных шаблона:
Демонстрационный магазин
Демонстрационный сайт
То корзины в них примерно одинаковые.
Для редактирования возьмем шаблон "Демонстрационный магазин", в котором краткая корзина выглядит так:
Изменения в ТДС:
Открываем типовые динамические страницы интернет магазина, далее "Интернет-магазин корзина" и "Настройки страницы"
Находим:
// Добавление товара в корзину
if (Core_Array::getRequest('add'))
...
И выше добалвяем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// Ajax Обновление товара в корзине if (Core_Array::getRequest('updateCart')) { $shop_item_id = intval(Core_Array::getRequest('updateCart')); $count = intval(Core_Array::getRequest('count')); if (($shop_item_id) && ($count)) { $oShop_Cart_Controller = Shop_Cart_Controller::instance(); $oShop_Cart_Controller ->checkStock($bCheckStock) ->shop_item_id($shop_item_id) ->quantity($count) ->update(); } } // Ajax Удаляение товара из корзины if (Core_Array::getRequest('deleteCart')) { $shop_item_id = intval(Core_Array::getRequest('deleteCart')); if ($shop_item_id) { $oShop_Cart_Controller = Shop_Cart_Controller::instance(); $oShop_Cart_Controller ->shop_item_id($shop_item_id) ->delete(); } } |
Находим:
// Ajax
if (Core_Array::getRequest('_', FALSE) && (Core_Array::getRequest('add') || Core_Array::getRequest('loadCart')))
И заменяем на:
// Ajax
if (Core_Array::getRequest('_', FALSE) && (Core_Array::getRequest('add') || Core_Array::getRequest('loadCart') || Core_Array::getRequest('updateCart') || Core_Array::getRequest('deleteCart')))
Изменения в JS:
Открываем скрипт магазина /templates/template_НОМЕР/script.js
Находим:
// Функции без создания коллекции
$.extend({
...
И добалвяем в них 3 функции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
updateCart: function(path, shop_item_id, count){ $.clientRequest({ path: path + '?updateCart=' + shop_item_id + '&count=' + count, callBack: $.updelCallback, context: $('.little-cart') }); return false; }, deleteCart: function(path, shop_item_id){ $.clientRequest({ path: path + '?deleteCart=' + shop_item_id, callBack: $.updelCallback, context: $('.little-cart') }); return false; }, updelCallback: function(data, status, jqXHR){ $.loadingScreen('hide'); $(this).html(data); } |
Изменения в XSL-шаблоне:
В XSL-шаблон добавляем для товара:
1 2 3 4 5 6 7 8 9 10 11 |
<xsl:variable name="kol" select="../quantity" /> <xsl:variable name="cena" select="format-number(price, '#####0,##', 'my')" /> Стоимость: <xsl:value-of select="$cena * $kol"/> <br /> Кол-во: <xsl:value-of select="$kol"/> <br /> <a href="#" onclick="return $.updateCart('{/shop/url}cart/', {@id}, {$kol}+1)">Добавить</a> <br /> <a href="#" onclick="return $.updateCart('{/shop/url}cart/', {@id}, {$kol}-1)">Убавить</a> <br /> <a href="#" onclick="return $.deleteCart('{/shop/url}cart/', {@id})">Удалить</a> |
В итоге получим нечто подобное:
Красивее не стало, но стало функциональнее
Для вывода общей суммы покупок можно добавить:
<xsl:value-of select="sum(shop_cart[postpone = 0]/quantity)"/>
Добрый день! У меня, почему-то, не хотят данные обновляться через ajax. С обновление страницы данные меняются, а через ajax нет. Вы можете возмездно помочь?
спасибо за решение