Перейти к содержанию
freelancer

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Uncaught ReferenceError: cart_ is not defined

 

Поделиться сообщением


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

                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 на других страницах

Поделиться сообщением


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

нет, не будет

Поделиться сообщением


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

вместо (reload == 1) можно просто relaod и скобки там лишние и лишний редирект с checkout/cart на seo url

Поделиться сообщением


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

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

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

Поделиться сообщением


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

Народ, чет на 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']; ?>');"
 

Поделиться сообщением


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

location = location

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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