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


#23

Модуль Деловые линии у меня тормозит безбожно - 11-13 секунд ему нужно на обработку


#24

Я оставил только CДЭК. Деловые и пек тормозит сильно.


#25

Я так понял @myway уже за меня ответил:

Я отключил все стандартные модули расчёта стоимости\срока доставки (BoxBerry, СДЭК и т.д.) и настроил всё это через Edost. Больше не тормозит.

Думаю в текущих версиях CS-Cart это уже поправили.


#26

Действительно, в текущей версии вместо

if (!empty($cart['calculate_shipping'])) {

стоит

if ($cart['calculate_shipping']) {

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


#27

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

Решение есть, Ну и изменяя эти файлы после обновления они будут затёрты, надеюсь в будущих версиях это исправят, ну и соответственно изменяя эти файл вы берёте всю ответственность на себя.

Надо отредактировать 2 файла:

  • файл app/controllers/frontend/checkout.php примерно на 69 строчке внутри условия $mode == ‘add’

     fn_calculate_cart_content($cart, $auth, 'E', true, 'F', true);
    

поменять букву ‘E’ на ‘S’

  • файл app/functions/fn.cart.php, соответственно внутри функции fn_calculate_cart_content надо закомментировать код в 2 местах и добавить 1 условие:

вот это закомменитровать (скорее всего разработчики это в будущем удалят):

// FIXME: Backward compatibility: If the 'calculate_shipping' property is true, shipping calculation will be forced
    //if ($cart['calculate_shipping'] === true) {
    //    $calculate_shipping = 'A';
    //}

и вот это:

    // If shipping methods were changed, shipping recalculation is forced
    // Registry::registerCache(['checkout', $shipping_cache_key], $shipping_cache_tables, Registry::cacheLevel('user'));
    // if ($calculate_shipping === 'S' && !Registry::isExist('calculated_shipping_rates')) {
    //     $calculate_shipping = 'A';
    // }

а так же изменить условие примерно на 3715 строчке с такого:

if ($cart['calculate_shipping']) {

на такое:

if ($cart['calculate_shipping'] && $calculate_shipping != 'S') {

Тогда при добавлении в корзину товара расчёта доставки не будет, соответственно и тормоза тоже должный пропасть. И когда вы заходите в корзину или переходите на страницу оформления заказа, уже только там будет происходить расчёт стоимости доставки. Кайфуйте.


#28

Ещё в файле app/controllers/frontend/checkout.php примерно на 569 строчке внутри условия $mode == ‘checkout’ поменять строчку:

$shipping_calculation_type = fn_checkout_get_shippping_calculation_type($cart, $is_location_changed);

на

// $shipping_calculation_type = fn_checkout_get_shippping_calculation_type($cart, $is_location_changed);
$shipping_calculation_type = 'A';

на всякий случай. Так как функция fn_checkout_get_shippping_calculation_type возвращает либо A либо S. А нам надо обязательно чтобы при заходе в корзину всегда 1 раз рассчитались все цены на доставку.