Сохранение кол-ва товаров в корзине

+11
1.37K
В InstantShope существует проблема: если в корзине выбрать кол-во товара, а потом удалить какой либо товар из корзины, либо перейти к покупкам без оформления заказа, то кол-во товара не сохраняется. Прошу рассмотреть мое решение этой проблемы и посоветовать, возможно ли это решение как-то улучшить.

Буду показывать на примере своего сайта zoo40.ru

1. Вставляем в шаблон корзины перед концом формы </form> код:
  1.  
  2. <input id="mk" type="hidden" name="make" value="0" /><input id="pos" type="hidden" name="pos_id" value="0" />
  3.  
mk — будет показывать код команды, mk=0 — просто обычное оформление, 1 — это вернуться к покупкам, 2 — удаление товара

2. Присваиваем ссылкам классы:
  1.  
  2. <a href="#" id="cart-back" class="btn-back">ВЕРНУТЬСЯ К ПОКУПКАМ</a>
  3.  
  4. <a href="#" rel="{$item.cart_id}" class="btn-close" title="отказаться от товара">отказаться</a>
  5.  
3. Делаем код на jQuery:
  1.  
  2. $(document).ready(function(){
  3. $('#cart-back').click(function(){
  4. $('#mk').val('1'),$('#cart_form').submit();
  5. return false;
  6. });
  7.  
  8. $('.btn-close').click(function(){
  9. var rel=$(this).attr('rel');
  10. $('#mk').val('2'),$('#pos').val(rel),$('#cart_form').submit();
  11. return false;
  12. });
  13. ...
  14.  
т.е. через mk передаем код в форму

4. В файле frontend.php добавляем код проверки:
  1.  
  2. // ПРОСМОТР ЗАКАЗА
  3. //
  4.  
  5. if ($do=='view_order'){
  6.  
  7. //сохраняем кол-во товаров в корзине
  8. $qty_arr = $inCore->request('qty', 'array');
  9.  
  10. $mk = $inCore->request('make', 'int', 0); //это комманда, например вернуться к покупкам
  11. if($mk==1) { //вернуться к покупкам
  12. if ($qty_arr) {
  13. $model->saveCart($qty_arr);
  14. }
  15. if($_SESSION['inshop_last_url']) $inCore->redirect($_SESSION['inshop_last_url']);
  16. else $inCore->redirect('/shop');
  17. }
  18.  
  19. if($mk==2) { //отказаться от товара
  20. if ($qty_arr) {
  21. $model->saveCart($qty_arr);
  22. }
  23. $pos_id = $inCore->request('pos_id', 'int', 0);
  24. $model->deleteFromCart($pos_id);
  25. $inCore->redirect('/shop/cart.html');
  26. }
  27.  
  28.  
  29. if ($qty_arr) {
  30. ....
  31.  

Посмотреть в деле вы сможете зайдя на сайт zoo40.ru, закажите каконить товар и в корзине попробуйте менять кол-во товара, а потом либо перейти к покупкам либо удалить какуюнить позицию



P.S. Если интересно, то в след. посте могу рассказать как я сделал ajax корзину для и-шопа
+1
Роман Роман 11 лет назад #
P.S. Если интересно, то в след. посте могу рассказать как я сделал ajax корзину для и-шопа
расскажите, может как-нить приобрету этот компонет... вот и пригодится
+1
vicoder vicoder 11 лет назад #
Ок! В начале следующей недели напишу

Еще от автора

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