Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

чпу для корзины + кнопка "удалить" не обновляют страницу


Recommended Posts

4qTAaF4.png

 

причина

catalog/view/javascript/common.js
    if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
     location = 'index.php?route=checkout/cart';
    } else {
     $('#cart > ul').load('index.php?route=common/cart/info ul li');
    }

предлагайте ТОЛЬКО красивые решения

 

Надіслати
Поділитися на інших сайтах

Предложу некрасивое

 

добавить в шаблон корзины переменную
<script>
var cart_ = true;
</script>

В common.js внести правки
if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout' || cart_ == true) {

Надіслати
Поділитися на інших сайтах

Как то-так получилось, правда я убил целый час прежде чем понять откуда ноги растут (интересно же)

 

Сама функция 

function getURLVar(key) {
	var value = [];
	var query = String(document.location).split('?');

	if (query[1]) {
		var part = query[1].split('&');
		
		for (i = 0; i < part.length; i++) {
			var data = part[i].split('=');

			if (data[0] && data[1]) {
				value[data[0]] = data[1];
			}
		}

		if (value[key]) {
			return value[key];
		} else {
			return '';
		}
	} else {
		return String(location.pathname).split('/')[1];
	}
}

Проверка 

if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout' || getURLVar('route') == 'checkout-cart')
Змінено користувачем ArtenPitov
Надіслати
Поділитися на інших сайтах

хм...

 

а не должно

 

getURLVar('route')  должен взять параметр

И.. не гоже лезть в "системную" функциию, ее используют и другие скрипты

 

А в объект cart - можно, потому что не нарушается логика

Надіслати
Поділитися на інших сайтах

хм...

 

а не должно

 

getURLVar('route')  должен взять параметр

И.. не гоже лезть в "системную" функциию, ее используют и другие скрипты

 

А в объект cart - можно, потому что не нарушается логика

тогда так 

if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout' || String(location.pathname).split('/')[1] == 'checkout-cart')
Надіслати
Поділитися на інших сайтах

	'remove': function(key, reload) {
		$.ajax({
			url: 'index.php?route=checkout/cart/remove',
			type: 'post',
			data: 'key=' + key,
			dataType: 'json',
			beforeSend: function() {
				$('#cart > button').button('loading');
			},
			complete: function() {
				$('#cart > button').button('reset');
			},
			success: function(json) {
				// Need to set timeout otherwise it wont update the total
				setTimeout(function () {
					$('#cart > button').html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>');
				}, 100);

                                if ((reload == 1)||(getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout')) {
					location = 'index.php?route=checkout/cart';
				} else {
					$('#cart > ul').load('index.php?route=common/cart/info ul li');
				}
			},
	        error: function(xhr, ajaxOptions, thrownError) {
	            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
	        }
		});
	}

в шаблон

onclick="cart.remove('<?php echo $product['cart_id']; ?>', 1);"
Надіслати
Поділитися на інших сайтах

  • 4 months later...

Народ, чет на https протоколе, не работает reload с включенным seo_pro и ЧПУ для страницы корзины. Не ошибок в консоле, ничего. Сам метод отрабатывает, но getURLVar('route') отдает undefiend
ничего изменено не было по сути. Думаю проблема все таки остается.

Может тогда непосредственно на странице корзины перед <?php echo $footer; ?>
Вставить скриптик

 

<script type="text/javascript">
    function remove(key) {
    $.ajax({
      url: 'index.php?route=checkout/cart/remove',
      type: 'post',
      data: 'key=' + key,
      dataType: 'json',
      beforeSend: function() {
        $('#cart > button').html('loading');
      },
      complete: function() {
        $('#cart > button').html('reset');
      },
      success: function(json) {
        // Need to set timeout otherwise it wont update the total
        setTimeout(function() {
          $('#cart #cart-total').html(json['total']);
        }, 100);

        location.reload();
      },
      error: function(xhr, ajaxOptions, thrownError) {
        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
      }
    });
  }
</script>

А на кнопку remove ставить onclick="remove('<?php echo $product['cart_id']; ?>');"
 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.