Andmanx Posted November 4, 2012 Report Share Posted November 4, 2012 Что надо:Удаление товара из корзины непосредственно со страницы без перезагрузки. Как на движке prestashop ( http://demo-store.prestashop.com/en/ )Что сделал:Вклеил часть кода из cart.tpl в cart_informer.tplТовар отображается, удаляется, но перенаправляется на /cart/ .htaccess'ом (index.php?module=CartView&delete_variant=$1 )Пробую внести изменения в ajax-cart.js , но знания джаваскрипта невелики и это не удается. Пробую брать пример с jcart, на котором, собственно, всё основано.ajax_cart.js : function remove(link) { var queryString = link.attr('href'); queryString = queryString.split('='); $.ajax({ type: 'GET', data: { "delete_variant": delete_variant_id, } }); container.delegate('.remove', 'click', function(e){ remove($(this)); e.preventDefault(); }); cart_informer.tpl :<td class="remove"> <a href="cart/remove/{$purchase->variant->id}"> <img src="design/{$settings->theme}/images/delete.png" title="Удалить из корзины" alt="Удалить из корзины"> </a> </td>Что я делаю не так? Quote Link to post Share on other sites
Noxter Posted November 4, 2012 Report Share Posted November 4, 2012 http://forum.simplacms.ru/discussion/1334/raschet-ceny-bez-perezagruzki-stranicy/p1 Quote Link to post Share on other sites
Andmanx Posted November 4, 2012 Author Report Share Posted November 4, 2012 Добавил в cart_informer.tpl<script type="text/javascript"> function remove_item_cart(delete_variant_id) { var deleivery = $("input[name=delivery_id]:checked").attr('id'); var lastpage ={/literal}{if $last_page}'{$last_page}';{else}'';{/if}{literal} $('#remove_'+delete_variant_id).append('<img class="cart_loader" src="design/{/literal}{$settings->theme}{literal}/images/loader.gif" title="Выполнятю..." alt="Выполнятю..." style="z-index: 99; position: absolute">'); $("#deliveries").animate({'opacity':'0.3'},600); $.ajax({ url: "ajax/cart_update.php", data: {'delete_variant_id':remove_id}, success: function(data){ if(data){ if(data.total == 0){ if(lastpage){ location.href=lastpage; } else{ location.reload(); } } $('#cart_informer').html(data.informer); $('#total_products').html(data.total_products); $('#total_price').html(data.total_price); $('#deliveries').html(data.delivery); $("input[id="+deleivery+"]").attr('checked', true); $('#item_cart_'+delete_variant_id).hide(); $('.cart_loader').remove(); $("#deliveries").animate({'opacity':'1'}, 0); } } }); } </script>Заменил код там же: <td class="remove" id="remove_{$purchase->variant->id}"> <a href="#" onclick="cart/remove/{$purchase->variant->id}; return false"> <img src="design/{$settings->theme}/images/delete.png" title="Удалить из корзины" alt="Удалить из корзины"> </a> </td>Удалил header('location: '.$this->config->root_url.'/cart/');из CartView.phpЧто опять сделал не так? Quote Link to post Share on other sites
Andmanx Posted November 4, 2012 Author Report Share Posted November 4, 2012 <td class="remove" id="remove_{$purchase->variant->id}"> <a href="#" onclick="cart/remove/{$purchase->variant->id}; return false"> <img src="design/{$settings->theme}/images/delete.png" title="Удалить из корзины" alt="Удалить из корзины"> </a> </td>function remove_(purchase->variant->id){ $('#remove_'+purchase->variant->id).append('<img class="cart_loader" src="design/{$settings->theme}/images/loader.gif" title="Выполняю..." alt="Выполняю..." style="z-index: 99; position: absolute">'); }Где беда? Quote Link to post Share on other sites
Noxter Posted November 4, 2012 Report Share Posted November 4, 2012 В cart.tpl, возьми тот что из урока. Quote Link to post Share on other sites
Andmanx Posted November 4, 2012 Author Report Share Posted November 4, 2012 Из cart.tpl и брал. Но как я понял версии использованы разные и код другой.remove_id — как я понял старый код, на новой версии используется delete_variant_id Quote Link to post Share on other sites
Andmanx Posted November 5, 2012 Author Report Share Posted November 5, 2012 Kors, подскажи, пожалуйста. Quote Link to post Share on other sites
Andmanx Posted November 5, 2012 Author Report Share Posted November 5, 2012 И что, собственно, делать?Мне кажется разработчикам всё-равно придётся встраивать это в новые версии.Неужели этот код такой сложный? Quote Link to post Share on other sites
misterk Posted November 6, 2012 Report Share Posted November 6, 2012 Делать следующее:-Ждать пока разработчику "придется" включить ajax корзину в новые версии.- Заказать данный функционал у кого-нить...Раз уж Сами не сумели..- Суметь самому написать рабочий код))P.S. Понятние "сложность кода" весьма относительное... Quote Link to post Share on other sites
technokid Posted April 19, 2015 Report Share Posted April 19, 2015 Может пригодится.Я решил так:создал файл cart_update.php в папке ajaxвот его содержимое session_start(); require_once('../api/Simpla.php'); $simpla = new Simpla(); if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest'){ if(isset($_GET['delete_variant_id']) && !empty($_GET['delete_variant_id'])){ $id = intval($_GET['delete_variant_id']); $simpla->cart->delete_item($id); echo json_encode(array('status'=>'success')); } } cart_informer.tpl у меня такой <li> <a href="products/{$product->product->url}"> {foreach $product->product->images as $images} <img src="{$images->filename|resize:50:50}" alt="{$product->product->name}" class="img-responsive"> {/foreach} </a> <span class="cart-content-count">x {$product->amount}</span> <strong><a href="products/{$product->product->url}">{$product->product->name}</a></strong> <em>{$product->variant->price|convert} {$currency->sign|escape}</em> <a href="javascript:void(0);" onclick="removeGoods(this,{$product->variant->id})" class="del-goods"> </a> </li> в этот же файл (cart_informer.tpl) в конец добавил {literal} <script type="text/javascript"> function removeGoods(el,id) { $.ajax({ url: "/ajax/cart_update.php", type : 'get', data: {'delete_variant_id':id}, dataType : 'json', success : function(d){ if(d.status == 'success'){ $(el).parent().remove(); } } }); } </script> {/literal} Как то так. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.