Jump to content

Recommended Posts

Что надо:
Удаление товара из корзины непосредственно со страницы без перезагрузки. Как на движке 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>



Что я делаю не так?
Link to post
Share on other sites

Добавил в 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


Что опять сделал не так?
Link to post
Share on other sites

		<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">');          }


Где беда?
Link to post
Share on other sites

Делать следующее:
-Ждать пока разработчику "придется" включить ajax корзину в новые версии.
- Заказать данный функционал у кого-нить...Раз уж Сами не сумели..
- Суметь самому написать рабочий код))
P.S. Понятние "сложность кода" весьма относительное...

Link to post
Share on other sites
  • 2 years later...

Может пригодится.
Я решил так:
создал файл 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}

Как то так.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...