Перейти к содержимому


Фото
- - - - -

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


  • Чтобы отвечать, сперва войдите на форум
5 ответов в теме

#1 interyes

interyes
  • Пользователь
  • 38 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x

Опубликовано 31.01.2019 - 08:31

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

 

.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;
        });  

 

 



#2 phukortsin

phukortsin
  • Фрилансер
  • 729 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 31.01.2019 - 09:35

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



#3 fancy-studio

fancy-studio
  • Пользователь
  • 65 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда::)

Опубликовано 31.01.2019 - 10:42

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

 

Сначала взять все 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}

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



#4 interyes

interyes
  • Пользователь
  • 38 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x

Опубликовано 31.01.2019 - 10:50

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

 

Сначала взять все 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}

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

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



#5 phukortsin

phukortsin
  • Фрилансер
  • 729 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 31.01.2019 - 13:48

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

 

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

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



#6 fancy-studio

fancy-studio
  • Пользователь
  • 65 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда::)

Опубликовано 31.01.2019 - 17:07

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

 

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

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

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






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых