Минимальная сумма заказа в корзине и оформлении заказа в 1С-Битрикс

Просмотров: 17171

В этой заметке добавим возможность установки минимальной суммы заказа, в новом шаблоне корзины на 1С-Битрикс.

В этой заметке добавим возможность установки минимальной суммы заказа, в новом шаблоне корзины на 1С-Битрикс. Не "прибитую гвоздями" в шаблоне компонента, а управляемую через параметры компонента.

Работать будет так: Если сумма в корзине меньше минимальной - то кнопка "Оформить заказ" не показывается, вместо нее уведомление. Как только сумма превышает минимальную - кнопка появляется. Все работает на лету, без перезагрузки страницы. Как-то так:

Минимальная сумма битрикс

Добавляем параметр в корзину

Для начала скопируем шаблон корзины в шаблон своего сайта. В моем случае получился путь: /local/templates/ШАБЛОН_САЙТА/components/bitrix/sale.basket.basket/basket

Открываем, в шаблоне, файл .parameters.php и в массив параметров arTemplateParameters добавляем:

$arTemplateParameters['MIN_SUMM'] = array(
    'PARENT' => 'BASE',
    'NAME' => "Минимальная сумма",
    'TYPE' => 'STRING',
    'DEFAULT' => '0'
);

PS: в 'NAME' можно добавить и прописать сообщение из lang файла GetMessage('MIN_SUMM'), прописал прямо в файл для простоты объяснения.

После этого, в настройках компонента появится поле для указания минимальной суммы:

Минимальная сумма битрикс

Добавляем параметр в AJAX обработчик

Теперь, нужно добавить вывод этого параметра в шаблон. Для этого открываем файл (в шаблоне корзины) mutator.php. В этом файле собран массив с данными для вывода в представление. Обращение к этому файлу происходит при каждом запросе и массив отрабатывает на лету (AJAX). Файл фомирует результат для шаблонизатора mustashe

Находим формирование массива $totalData - примерно на 310-ой строчке. Нужно добавить:

//До формирования массива
  $minSummOrder = $this->arParams['MIN_SUMM'];
  if ($result['allSum'] < (int)$minSummOrder) {
      $minSummMustache = $minSummOrder;
  }

//В конец массива ключ MIN_SUMM
  'MIN_SUMM' => $minSummMustache

Для наглядности картинка: здесь мы проверили меньше ли сумма товаров, минимальной суммы и создали переменную для добавления в массив ключа 'MIN_SUMM'

Минимальная сумма битрикс

На картинке опечатка: не правильно оформлен int - в примере кода все правильно

Выводим параметр пользователям

И осталось вывести и обработать этот параметр для пользователей. Открываем файл шаблон_корзины/js-templates/basket-total.php он отвечает за формирование и вывод низа корзины: где поле купона, итоговая сумма и кнопка перехода к оформлению.

Находим строчку, в которой прописана кнопка перехода к оформлению (примерно, строка 75) и заворачиваем в условие.

{{#MIN_SUMM}}
    <div class="minimal_summ">
        Минимальная сумма заказа {{{MIN_SUMM}}} руб.
    </div>
{{/MIN_SUMM}}
{{^MIN_SUMM}}
  <button data-entity="basket-checkout-button">
    <?=Loc::getMessage('SBB_ORDER')?>
  </button>
{{/MIN_SUMM}}

Здесь мы проверили: если из файла mutator.php пришло значение для MIN_SUMM убираем кнопку перехода к оформлению, но выводим оповещение.

Минимальная сумма в оформлении заказа

Особо хитрые пользователи могут проигнорировать этот функционал и просто перейти на страницу оформления (если знают ссылку). Что бы обезопасить и оформление заказа, можно также проверять минимальную сумму и перенаправлять в корзину.

Как реализовать, смотрите в видео.

В видео не учел важный момент. После оформления заказа не покажется результат из файла confirm.php, так как сумма заказа станет 0 - и сработает условие с редиректом. Что бы этого избежать, нужно обвернуть условие проверки и редирект в условие:
if (!$request->get('ORDER_ID') <> '') {
    if ($arParams['MIN_SUMM'] > $arResult['JS_DATA']['TOTAL']['PRICE_WITHOUT_DISCOUNT_VALUE']) {
        LocalRedirect($arParams['PATH_TO_BASKET']);
    }
}

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 100 000 руб. от 7-ми дней

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

Мобильное приложение

от 500 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 350 000 руб. от 1-го месяца

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

Инфресурс

от 400 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 40 000 руб. от 2-х дней

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