Тормозит кнопка добавления В корзину, у всех


#1

Есть такая проблема, которая похоже была всегда. Присутствует на всех без исключения магазинах на CS-Cart, которые мне попадались - тормозит кнопка добавления товара в корзину(в том числе на демо). С этим нужно что-то сделать. Если нужно набрать в корзину товар из категории с товарами списком сделать это затруднительно и крайне не удобно. Да и при простой покупке из карточки это плохо. Если попап появится мгновенно, а информация на сервер уйдет секундой позже никто не пострадает, но ощущения тормозов не будет.

Не припомню чтобы такая проблема была еще на какой-либо популярной CMS интернет-магазинов, везде мгновенно для пользователя действие производится. Проблему считаю важной.


Работа с корзиной
#2

что подразумевается под тормозит? время между появления попап а нажатием кнопки?
Поставьте бесплатны модуль “полет в корзину” и “тормоз” станет вполне логичным и даже необходимым.


#3

Давно стоит, но это костыль. Тормозить от того не перестает, несколько товаров от того добавить последовательно в корзину не проще.


#4

Последнее время вырезаем данный popup, создает впечатление подвисание выполнения функций.


#5

А если без него, то товар сразу появляется в корзине без лага?


#6

0.3-0.5 сек ajax прелоадер и всплывашка нотификации в углу, что товар добавлен.


#7

Если кому требуется быстрый фикс, для 481 и выше (скорее всего)

/app/controllers/frontend/checkout.php

Ищем и комментируем строки (примерно 84 строка)

// $msg = Tygh::$app['view']->fetch('views/checkout/components/product_notification.tpl');
// fn_set_notification('I', __($product_cnt > 1 ? 'products_added_to_cart' : 'product_added_to_cart'), $msg, 'I');

Вставляем
fn_set_notification('N', __('notice'), __('product_added_to_cart'));

*Создайте языковую переменную для product_added_to_cart

Кстати, где-то на форуме уже всплывала тема.


Закрытые окна Быстрый просмотр товара
#8

не подскажите какую языковую переменную нужно создать? И Где?


#9

Администрирование - Языки - Переводы.

Укажите значение product_added_to_cart
Перевод, например: Товар добавлен в корзину.


#10

Наконец-то дошли руки, спасибо, теперь добавление просто летает ))


#11

Добрый день.
Я открыл checkout.php и там уже есть все эти строки:

Отличие только в названии языковой переменной. Может этот фикс вставили в базу cs-cart? Или я не там смотрю? Заранее спасибо.


#12

из вашего куска первые две строки комментируются и вместо них вставляется третья - читайте внимательно выше:


#13

Добрый день. Спасибо, а как комментировать эти строки, какими знаками? Заранее спасибо


#14

в показанном примере они и закомментированы - два слэша в начале строки


#17

Этот код не работает долго, основная проблем в том, что при добавлении в корзину запускается функция:
fn_calculate_cart_content(&$cart, $auth, $calculate_shipping = ‘A’, $calculate_taxes = true, $options_style = ‘F’, $apply_cart_promotions = true)

вот с такими параметрами:
fn_calculate_cart_content($cart, $auth, ‘S’, true, ‘F’, true);

конкретно $calculate_shipping = F -означает что при добавлении в корзину из карточки товара не должна пересчитываться стоимость доставки. Но внутри функции нет проверок на эту переменную а идет проверка на другую переменную if (!empty($cart[‘calculate_shipping’])) в итоге вызывается функция Shippings::calculateRates($shippings); и если у вас подключены сторонние службы доставки то при добавлении в корзину товара запрашиваются тарифы на стоимости доставки для корзины от сторонних API в следствии тормозит добавление корзины

Позже отпишуть как своими силами поправить

Конкретно стоит обратить внимание на вот этот участок кода функции fn_calculate_cart_content:

    if (!empty($cart['calculate_shipping'])) {
        $rates = Shippings::calculateRates($shippings);

        foreach ($rates as $rate) {
            $g_key = $rate['keys']['group_key'];
            $sh_id = $rate['keys']['shipping_id'];

            if ($rate['price'] !== false) {
                $rate['price'] += !empty($product_groups[$g_key]['package_info']['shipping_freight']) ? $product_groups[$g_key]['package_info']['shipping_freight'] : 0;
                $product_groups[$g_key]['shippings'][$sh_id]['rate'] = empty($product_groups[$g_key]['shippings'][$sh_id]['free_shipping']) ? $rate['price'] : 0;
            } else {
                unset($product_groups[$g_key]['shippings'][$sh_id]);
            }

            if (!empty($rate['service_delivery_time'])) {
                $product_groups[$g_key]['shippings'][$sh_id]['service_delivery_time'] = $rate['service_delivery_time'];
            }
        }
    }