Удаление недоступных для заказа товаров из корзины

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

Задача: пользователи магазина могу наполнять корзины, но не доходить до оформления заказа. Такие корзины считаются брошенными. Но, пользователь может вернуться к оформлению через несколько дней и некоторые товары (ранее добавленные в корзину) могут быть сняты с продажи. Однако, такую корзину все равно можно оформить. Нужно автоматически удалить не доступные товары из корзины.

Удаление из корзины товаров, недоступных для заказа

Очистка корзины с помощью API 1С-Битрикс

Все просто: когда пользователь заходит в корзину, нужно запустить скрипт, который пройдется по всем товарам в корзине и удалит недоступные (снятые с продажи, отсутствующие и.т.д.).

В шаблоне корзины находим файл mutator.php и где-нибудь сверху добавляем код:

foreach ($arResult['BASKET_ITEM_RENDER_DATA'] as $basketItem) {
    if ($basketItem['NOT_AVAILABLE'] == 1) {
        CSaleBasket::Delete($basketItem['ID']);
    }
}

Проходимся по всем товарам добавленным в корзину. И если у товара присутсвует ключ ['NOT_AVAILABLE'] (будет равен единице), значит этот товар не доступен и удаляем его методом CSaleBasket::Delete

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

Михаил Базаров 04.06.2024
Тоже самое на D7
Код
$fUserId = \Bitrix\Sale\Fuser::getId();
$basket = Basket::loadItemsForFUser($fUserId, \Bitrix\Main\Context::getCurrent()->getSite());

foreach ($arResult['BASKET_ITEM_RENDER_DATA'] as $basketItem) {
    if ($basketItem['NOT_AVAILABLE'] == 1) {
        $basketItem = $basket->getItemById($basketItem['ID']);
        $basketItem->delete();
        $basket->save();
    }
}

Блог-note: заметки разработчика

Если пользователь авторизован то... API Битрикс

Достаточно часто, при создании сайта на битрикс нужно вывести в шаблон или компонент, некую информацию, доступную только...

Если папка то применяем...в Битрикс

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

Автогенерация символьных кодов разделов и элементов Битрикс

Иногда нужно создать символьные коды для разделов и элементов. Например: если сайт создан давно и ранее работал на ID се...

Композитный сайт на 1С-Битрикс

Для новых клиентов: Все новые проекты будут включать в себя применение технологии "Композитный сайт" - данная услуга уже...

Вывести компонент новостей на страницу в Битрикс

Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, что ищут люди. Итак за последню...

Скопировать номер телефона из поля пользователя в телефон для регистрации

Задача, на конкретном сайте: раньше все пользователи регистрировались по стандартному режиму, через логин(e-mail) и паро...

Запретить указание количества товаров, добавляемого в корзину, в определенных разделах каталога.

Задача состоит в том, чтобы запретить указание количества товара, добавляемого в корзину, в определенных разделах катало...

Самодельная форма добавления элемента на API Битрикс

Компонент iblock.element.add.form написан таким образом, что вы не сможете (не попотев изрядно и не используя js) как уг...

Обновить страницу Inapbrowser в приложении Apache Cordova, при выходе из фона

Задача: Мобильное приложение, созданное на Apache Cordova должно перезагрузить текущую страницу, открытую с помощью плаг...