ajax добавление товара в корзину в InstantShop

+24
3.68K
Сделал возможность добавления в корзину безе перезагрузки странички

Напишу на примере своего сайта, главное принцип, а правки надо вносить самим
1. В старичке код корзины оформляем так:
  1.  
  2. <a href="javascript:$('#form{$item.id}').submit();" class="add-basket" rel="{$item.id}">Добавить в корзину</a>
  3.  
2. в jQuery подключаем код (это для моего примера):
  1.  
  2. $('a.add-basket').click(function(){
  3. var item_id = $(this).attr('rel');
  4. var obj = $(this);
  5. if($(obj).hasClass('in-basket') || !item_id) return true;
  6. if(item_id) {
  7. $(obj).html('<img class="ia" src="/images/ajax-loader.gif" height="8" />');
  8. $.getJSON("/includes/cart_ajax.php?id="+item_id,
  9. function(data) {
  10. $(obj).addClass('in-basket'); $(obj).text('Товар в корзине');
  11. $(obj).attr('href', '/shop/cart.html'); $('#qty').text(data.items_count);
  12. $(obj).attr('title', 'Количество заказываемого товара вы можете посмотреть / поменять непосредственно в корзине');
  13. });
  14. }
  15.  
  16. return false;
  17. });
  18.  
3. Файл cart_ajax.php который добавляет товар:
  1.  
  2. <?
  3.  
  4. define('PATH', $_SERVER['DOCUMENT_ROOT']);
  5. define('HOST', 'http://' . $_SERVER['HTTP_HOST']);
  6. define("VALID_CMS", 1);
  7.  
  8. include('../core/cms.php'); //ядро
  9. include('config.inc.php'); //конфиг, оставлен для старых плагинов
  10.  
  11. $inCore = cmsCore::getInstance();
  12. $inDB = cmsDatabase::getInstance();
  13.  
  14. $inCore->loadModel('shop');
  15. $model = new cms_model_shop();
  16.  
  17.  
  18. //добавляем товар в корзину
  19. $item_id=$inCore->request('id', 'int', 0);;
  20. $var_art_no = '';
  21.  
  22. $qty = 1;
  23. $item = $inDB->get_fields('cms_shop_items','id='.$item_id, 'id, category_id');
  24.  
  25. $model->addToCart($item_id, $var_art_no, $qty, $chars);
  26.  
  27.  
  28. $items = $model->getCartItems();
  29. $totalsumm = 0;
  30. foreach($items as $item){
  31. $qty = $item['cart_qty'];
  32. $totalsumm += ($item['price'] * $qty);
  33. }
  34. if (!$items) $items_count = 0;
  35. else $items_count = (int)sizeof($items);
  36. $totalsumm = round($totalsumm, 2);
  37.  
  38. echo $_GET['callback'] . '{"items_count":"'.$items_count.'", "totalsumm":"'.$totalsumm.'"}';
  39. ?>
  40.  

пример можно посмотреть на сайте zoo40.ru
0
Роман Роман 12 лет назад #
Спасибо, возьму в копилку :)
0
Katerina Katerina 12 лет назад #
Спасибо.
И сайт у Вас красивый.
0
aha aha 12 лет назад #
где шаблон заказывали? дайте адресок
0
vicoder vicoder 12 лет назад #
наш студийный дизайнер. Если нравится уровень наших работ, можете у нас заказать сайт под ключ!
0
Александр Александр 12 лет назад #
+ отличное дополнение
0
vicoder vicoder 12 лет назад #
можно и на славянской культуре внедрить
0
Александр Александр 12 лет назад #
Да кстати, это было бы удобней для покупателей
0
Александр Александр 12 лет назад #
Решение конечно интересное, но очень скудное объяснение по его реализации. Было бы не плохо, если бы объяснение по реализации было бы более подробным. На пример указать директории к файлам и более точнее указать где и как подключить данный код в jQuery.
0
Bubble Gumoff Bubble Gumoff 12 лет назад #
Отличное дополнение, это то что нужно! А для сравнения товаров на AJAX как будет выглядеть?
0
Bubble Gumoff Bubble Gumoff 12 лет назад #
Да и еще обязательно клик делать ссылкой типа <a href="javascript:$('#form{$item.id}').submit();" class="add-basket" rel="{$item.id}">Добавить в корзину</a> ???

Как сделать такого вида например ?
<span style=&#8203;"cursor:&#8203;pointer;&#8203;text-decoration:&#8203;underline;&#8203;" onclick=&#8203;"compareItems('id_2776', true)&#8203;">&#8203;Сравнить&#8203;</span>&#8203;


P.S. для "SEO"
0
Bubble Gumoff Bubble Gumoff 12 лет назад #
Вроде так должно работать, не проверял

Код PHP:
  1. <input type="button" class="add-basket" onclick="window.location.href='#form{$item.id';" name="add-basket" value="Добавить в корзину" rel="{$item.id}">
  2. Это чтобы не палить ссылки a href хоть и javascript
0
Def Def 11 лет назад #
а на 1.10.1 будет работать?
0
onlinespr onlinespr 9 лет назад #
на 1.10.5 заработало изменив на это:
Код PHP:
  1. include(PATH.'/core/ajax/ajax_core.php');
  2. include(PATH.'/includes/config.inc.php');

Еще от автора

связка ishop и программа Покупка на Яндекс-маркете (2)
продолжение http://instantcms.ru/blogs/uluchshenija/svjazka-ishop-i-programa-pokupka-na-jandeks-markete.htmlпервой части
связка ishop и программа Покупка на Яндекс-маркете
Яндекс маркет позволяет заказывать товары непосредственно с яндекса - удобная штука.
Сортировка дополнительных картинок в шопе drag'n'drop
Сделал возможность перемещения дополнительных картинок в шопе: т.е. можно мышкой взять и перетащить картинку вверх-вниз, как требуется
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.