В стандартном компоненте корзины Битрикс (bitrix:sale.basket.basket), есть функционал вывода удалённых и неактивных товаров. То есть человек кладёт в корзину товар, Администратор удаляет товар из инфоблока, но у пользователя он остаётся в корзине с пометкой "Недоступен". В $arResult у этого товара появляется ключ "NOT_AVIABLE" => "true". Все бы хорошо но при такой ситуация пользователь не может оформить заказ из-за этого товара. Появляется ошибка. В общем создаются проблемы с работой магазина.
Вопрос в том как полностью удалить из $arResult такие товары. Чтобы они и не попадали в корзину. Признак таких товаров - ключ NOT_AVIABLE.
Я пробывал делать в файле result_modifier.php шаблона так.
foreach($arResult["GRID"]["ROWS"] as $key => $arItem)
{
if(isset($arItem['NOT_AVAILABLE'])){
unset($arResult["GRID"]["ROWS"][$key]);
}
}
Это не помогло. Во-первых ключ удаляется не полностью !? в массиве все равно остаётся ключ с id товара и несколькими вложенными ключами.
Да и впринципе я просто удаляю ключ из массива который уже в представление. Хотелось бы его удалять сразу в контроллере, так чтобы получать уже правильный массив?
А почему бы при удалении товара, по событию не посмотреть есть ли он в корзинах у пользователей и просто удалить из корзины.
Для скорости это можно сделать даже прямым запросом к БД. Так же по событию, разумеется)
Продвижение своими сайтами как стратегия роста и независимости