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


Фото
- - - - -

Обновление корзины при изменении кол-ва товара


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

#1 interyes

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

Опубликовано 26.01.2019 - 16:22

Всем привет. На сайте реализована всплывающее окно с корзиной и в шаблоне корзины имеется следующая конструкция:

{if $cart->total_products >= 5}
    <span id="cart_total" style="font-size: 22px;color: #ff3f3f;">+ БЕСПЛАТНАЯ ДОСТАВКА<span>
{/if} 
{if $cart->total_products < 5}
    <span id="cart_total">*Менее 5-ти позиций, <b>доставка - 300 руб.</b><span>
{/if}     

Прошу помощи как сделать обновление этой информации при изменении кол-ва без перезагрузки всего сайта.



#2 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 972 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 26.01.2019 - 16:29

Как минимум нужна ссылка на сайт.

#3 interyes

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

Опубликовано 26.01.2019 - 16:31

Как минимум нужна ссылка на сайт.

...


Изменено: interyes, 26.01.2019 - 17:01


#4 interyes

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

Опубликовано 26.01.2019 - 16:42

Как минимум нужна ссылка на сайт.

Возможно создать для каждой текстовки свой шаблон и в cart_update.php по аналогии обрабатывать?

$result = array('cart_item_total'=>$simpla->design->fetch('cart_item_total.tpl'),
					'cart_total'=>$simpla->design->fetch('cart_total.tpl'), 
					'cart_mini'=>$simpla->design->fetch('cart_mini.tpl'),
					'cart_coupon'=>$simpla->design->fetch('cart_coupon.tpl'),
					'coupon_status'=>$coupon_result,
					'coupon_result'=>$simpla->design->fetch('cart_coupon_result.tpl'),
					'total_products'=>$cart->total_products
	);


#5 phukortsin

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

Опубликовано 26.01.2019 - 16:45

Возможно создать для каждой текстовки свой шаблон и в cart_update.php по аналогии обрабатывать?

Именно так и надо делать, по аналогии с уже обновляющимися блоками...

#6 interyes

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

Опубликовано 26.01.2019 - 17:01

Именно так и надо делать, по аналогии с уже обновляющимися блоками...

Спасибо, буду разбираться!



#7 interyes

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

Опубликовано 26.01.2019 - 17:22

Что то делаю видимо не так.

В корзине код

<span id="cart_delivery">{include file='cart_delivery.tpl'}</span>

cart_delivery.tpl

{if $cart->total_products >= 5}
			<span style="font-size: 22px;color: #ff3f3f;">+ БЕСПЛАТНАЯ ДОСТАВКА<span>
{else}
            <span>*Менее 5-ти позиций, <b>доставка - 300 руб.</b><span>
{/if}

cart_update.php

$result = array('cart_item_total'=>$simpla->design->fetch('cart_item_total.tpl'),
					'cart_total'=>$simpla->design->fetch('cart_total.tpl'), 
					'cart_delivery'=>$simpla->design->fetch('cart_delivery.tpl'), 
					'cart_mini'=>$simpla->design->fetch('cart_mini.tpl'),
					'cart_coupon'=>$simpla->design->fetch('cart_coupon.tpl'),
					'coupon_status'=>$coupon_result,
					'coupon_result'=>$simpla->design->fetch('cart_coupon_result.tpl'),
					'total_products'=>$cart->total_products
);

Подскажите, что не учел?



#8 interyes

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

Опубликовано 26.01.2019 - 17:26

Так же в скрипте везде добавил по аналогии

// Обновление информера корзины
        //----------------------------------------//
        function update_cart(variant_id, amount) {
            var coupon_code = $("#coupon_code").val();
            $.ajax({
                url: "ajax/cart_update.php",
                data: {
                    'variant_id': variant_id,
                    'amount': amount,
                    'coupon_code': coupon_code
                },
                success: function(data) {
                    if (data) {
                        if (data.total_products == 0) {
                            $('#purchases').find('.Popup_top').remove();
                            $('#purchases').html('<div class="Popup_bottom">Ваша корзина пуста!</div>');
                            $('#cart_mini').html(data.cart_mini);
                        } else {
                            $('.cart_item_total_' + variant_id).html(data.cart_item_total);
                            $('#cart_total').html(data.cart_total);
							$('#cart_delivery').html(data.cart_delivery);
                            $('#cart_mini').html(data.cart_mini);
                            $('#cart_coupon').html(data.cart_coupon);
                            $('#coupon_result').html(data.coupon_result);
                            if ( data.coupon_status == 'success' ) {
                                $('#cart_coupon').parent().removeClass('hidden')
                            } else {
                                $('#cart_coupon').parent().addClass('hidden')
                            }
                        }
                        return false;
                    }
                }
            });
        };


#9 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 972 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 26.01.2019 - 18:04

Именно так и надо делать, по аналогии с уже обновляющимися блоками...

И это советует корс - царь программирования...
Позор!
Нужно данные отправлять json-ом без шаблонов, потом с помощью JS нужные данные вставлять в нужные места, а не вот такое рукоблудство.

#10 interyes

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

Опубликовано 26.01.2019 - 18:10

И это советует корс - царь программирования...
Позор!
Нужно данные отправлять json-ом без шаблонов, потом с помощью JS нужные данные вставлять в нужные места, а не вот такое рукоблудство.

Noxter, есть примеры реализации?



#11 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 972 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 26.01.2019 - 18:39

Noxter, есть примеры реализации?

В сети куча!

#12 phukortsin

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

Опубликовано 26.01.2019 - 20:28

И это советует корс - царь программирования...
Позор!
Нужно данные отправлять json-ом без шаблонов, потом с помощью JS нужные данные вставлять в нужные места, а не вот такое рукоблудство.

 

Не переживайте так, дяденька Noxter.

Ваше объяснение теоретически правильно. Но с практической точки для ТС не только совершенно бесполезно, но даже вредно, по-моему.

 

Вы совершенно не виноваты в том, что не заметили, что у ТС в текущих файлах есть все нужные примеры того, как через AJAX за один запрос можно обновлять сразу несколько мест на странице. И ему совсем не надо рыскать по Сети, все примеры у него под рукой. Такие примеры давным-давно известны, например, много лет уже такой прием используется в шаблоне trizzy. Если он Вам неизвестен, ничего страшного, не волнуйтесь, берегите здоровье...

 

И для того, чтоб дать такой абстрактый совет, как Вы дали, совсем не обязательно было знать адрес сайта...



#13 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 972 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 26.01.2019 - 20:39

Вот именно, ленивые и малоопытные именно так и делают, потому как так сделал Пикусов, унаследовали так сказать у него эту лень или недоопыт. Сами то думать не хотят, по этому и не делают оптимально, а делают лишь бы работало.
Все эти прёмы мне давно известны и все они одинаковые, простой копипаст кода не более того. Но тебе Корс этого никак не понять, ведь ты же не отличаешь файлы от классов, ты не обучаем, морально и физически устарел.
О чём тут можно говорить?

#14 phukortsin

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

Опубликовано 27.01.2019 - 11:01

Вот именно, ленивые и малоопытные именно так и делают, потому как так сделал Пикусов, унаследовали так сказать у него эту лень или недоопыт.


Вы совершенно правы, так действительно делают и ленивые и малоопытные. Потому как у них задача стоит чтоб работало правильно. А то, что у них некрасивый длинный код, в то время, как какой-нибудь мастер Noxter мог бы написать красивый короткий код, их обычно не волнует. Таково уж мышление у многих людей...

 

Сами то думать не хотят, по этому и не делают оптимально, а делают лишь бы работало.

 

Опять Вы правы, они для того и используют готовую CMS, чтоб меньше самим думать. И призывать их изобретать свой велосипед, как Вы частенько делаете, явно бесперспективно...

 

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






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

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