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

Кнопка "В корзину" и обновление страницы


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

Всем привет! Столкнулся с проблемой которую хотелось бы профиксить. При клике на кнопку "В корзину", выводится результат "В корзине" и добавляется класс к самой кнопке, но после ребута страницы все возвращается как было. Кто-то делал чтоб статус кнопки сохранялся т.е. оставался "В корзине". Всем спасибо!

 

.tpl

<input type="submit" class="Button js-add2basket" value="В корзину" data-result-text="В корзине"/>

ajax-cart.js

// Аяксовая корзина
$('form.cart').live('submit', function(e) {
	e.preventDefault();
	button = $(this).find('input[type="submit"]');
	$.ajax({
		url: "ajax/cart.php",
		data: {variant: $(this).find('select').val()},
		dataType: 'json',
		success: function(data){
			$('#cart_informer').html(data);
			if(button.attr('added_text'))
				button.val(button.attr('added_text'));
		}
	});
	$(this).find('input[type="submit"]').effect("transfer", { to: $("#cart_informer") }, 500);	
	return false;
});

кусок .js с добавлением класса

 // Добавление в корзину
        $(document).on('submit', 'form.variants', function (e) {
            e.preventDefault();
            var button = $(this).find('input[type="submit"]');
            var variant = $(this).find('.Menu_select-inner li.active').attr('data-variant');
            $.ajax({
                url: "ajax/cart.php",
                data: {
                    variant: $(this).find('select').val(),
                    amount: $(this).find('input[name="amount"]').val(),
                    variant: variant
                },
                dataType:'json',
                success: function(data) {
                    $('#cart_mini').html(data.cart_mini);
                    $('#cart_informer').html(data.cart_informer);
                    if(button.attr('data-result-text'))
                    button.val(button.attr('data-result-text'));
                    button.addClass('incart');
                }
            });
            // addBasketPop.popup('open');
            //     setTimeout(function(){
            //     addBasketPop.popup('close').fadeOut();
            // }, 1000);
            return false;
        });  

 

 

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

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

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

Вам необходимо делать проверку.

 

Сначала взять все id вариантов товаров, которые находятся в корзине

файл view/IndexView.php

 

под кодом

 

$this->design->assign('categories', $this->categories->get_categories_tree()); 

 

вставьте

//Варианты товаров в корзине
if(!empty($_SESSION['shopping_cart']))
    $variants_in_cart = array_keys($_SESSION['shopping_cart']);
else
    $variants_in_cart = array();


$this->design->assign('variants_in_cart', $variants_in_cart);
 

 

После чего вам в шаблоне будет доступна проверка

 

{if in_array($product->variant->id,$variants_in_cart)}
товар в корзине
{else}
добавить в корзину
{/if}

В шаблоне показано примерно, но смысл, думаю, ясен. 

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

 

Вам необходимо делать проверку.

 

Сначала взять все id вариантов товаров, которые находятся в корзине

файл view/IndexView.php

 

под кодом

 

$this->design->assign('categories', $this->categories->get_categories_tree()); 

 

вставьте

//Варианты товаров в корзине
if(!empty($_SESSION['shopping_cart']))
    $variants_in_cart = array_keys($_SESSION['shopping_cart']);
else
    $variants_in_cart = array();


$this->design->assign('variants_in_cart', $variants_in_cart);
 

 

После чего вам в шаблоне будет доступна проверка

 

{if in_array($product->variant->id,$variants_in_cart)}
товар в корзине
{else}
добавить в корзину
{/if}

В шаблоне показано примерно, но смысл, думаю, ясен. 

Большое спасибо!

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

Решение сверхсложное.

 

Надо использовать готовые средства типа

{if $smarty.session.shopping_cart.$variant_id}

да, так даже лучше будет

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

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

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

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

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

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

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

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

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

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