Очистка корзины с помощью 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
Недоступные товары будут автоматически удалены при открытии пользователем страницы корзины. Это произойдет незаметно, и пользователь даже не обратит внимания на их исчезновение.