с точки зрения логики выполнения программы эти два выражения аналогичны, просто второе более простое и короткое, разницы между ними ни какой.
Решение есть, Ну и изменяя эти файлы после обновления они будут затёрты, надеюсь в будущих версиях это исправят, ну и соответственно изменяя эти файл вы берёте всю ответственность на себя.
Надо отредактировать 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') {
Тогда при добавлении в корзину товара расчёта доставки не будет, соответственно и тормоза тоже должный пропасть. И когда вы заходите в корзину или переходите на страницу оформления заказа, уже только там будет происходить расчёт стоимости доставки. Кайфуйте.