Удалить товары из корзины, если есть определенные товары.

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

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

Корзина битрикс

Для начала создадим новое свойство для товаров каталога, в моем случае называется "Покупается отдельно" с кодом "ATT_B_ONLY". Обязательно, проставляем ему галку Значение добавляется в корзину

Корзина битрикс

Выводим оповещение о удалении в корзине

Переходим в шаблон корзины (sale.basket.basket) и создаем тут файл result_modifier.php, в который добавляем следующий код:

foreach ($arResult['GRID']['ROWS'] as $basketItem) {
    foreach ($basketItem['PROPS'] as $basketItemProp) {
        if ($basketItemProp['CODE'] == 'ATT_B_ONLY') {
             $arResult['BASKET_ITEM_ONLY'][] = $basketItem['NAME'];
        }
    }
}
  • Пребрали массив с товарами корзины.
  • Внутри перебора, довыбрали свойства товаров.
  • Если обнаружен товар со свойством "ATT_B_ONLY" добавили его название в ключ массива $arResult['BASKET_ITEM_ONLY'].
Ссылку на подробную информацию можно вывести на этой же странице, что бы не перенаправлять пользователя на новую. Достаточно воспользоваться заметкой
Показ страницы сайта в боковом слайдере

В template.php, добавляем оповещение с перечислением товаров из $arResult['BASKET_ITEM_ONLY']


В вашей корзине есть товары:
<strong>
<? echo implode(', ', $arResult['BASKET_ITEM_ONLY']) ?>
</strong>
Если продолжите оформление, другие товары будут удалены из корзины.<br>
<span id="show_coopon_about_panel">
Подробнее о купонах
</span>

Удаляем определенные товары из оформления заказа

Теперь, нам нужно удалить товары, у которых нет свойства с кодом "ATT_B_ONLY", из оформления заказа.

В шаблоне оформления заказа (sale.order.ajax) открываем или создаем (если еще нет) файл result_modifier.php и добавляем в него

foreach ($arResult['BASKET_ITEMS'] as $basketItem) {
    foreach ($basketItem['PROPS'] as $basketItemProp) {
        if ($basketItemProp['CODE'] !== 'ATT_B_ONLY') {
            CSaleBasket::Delete($basketItem['ID']);
        }
    }
}

Здесь, ровно тоже самое: проходимся по товарам заказа, внутри по свойствам товара и если нет свойства с кодом "ATT_B_ONLY" удаляем товар (запись корзины) методом CSaleBasket::Delete

Можно дополнить условие, обработав товары методом CSaleBasket::Update - переложив не соответсвующие товары в отложенные корзины. Таким образом, пользователю не придется снова искать их в каталоге, сможет просто найти не попавшие в выборку товары в отложенных.

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

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

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

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

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

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

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

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

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

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

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

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

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

Инфресурс

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

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

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

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

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