Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

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



Что я делаю не так?
Ссылка на сообщение
Поделиться на другие сайты

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


Что опять сделал не так?
Ссылка на сообщение
Поделиться на другие сайты

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


Где беда?
Ссылка на сообщение
Поделиться на другие сайты

Из cart.tpl и брал. Но как я понял версии использованы разные и код другой.
remove_id — как я понял старый код, на новой версии используется delete_variant_id

Ссылка на сообщение
Поделиться на другие сайты

И что, собственно, делать?
Мне кажется разработчикам всё-равно придётся встраивать это в новые версии.
Неужели этот код такой сложный?

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты
  • 2 года спустя...

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

Как то так.

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...