Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


 Поделиться

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

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) {

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

                if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout' || (typeof cart_ != 'undefined')) {
 

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

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

 

Сама функция 

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')
Ссылка на комментарий
Поделиться на других сайтах

Но здесь идет привязка непосредственно к url, а он может быть и 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);"
Ссылка на комментарий
Поделиться на других сайтах

Ага, как вариант, но не будет ли reload undefined на других страницах

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

и лишний редирект с checkout/cart на seo url

как было в движке, так я оставил
можно вписать 
location.reload();
 

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

  • 4 месяца спустя...

Народ, чет на 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 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.