Как удалить из arResult удалённые и неактивные товары ? Битрикс

102
19 декабря 2020, 09:20

В стандартном компоненте корзины Битрикс (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 товара и несколькими вложенными ключами.

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

Answer 1

А почему бы при удалении товара, по событию не посмотреть есть ли он в корзинах у пользователей и просто удалить из корзины.

Для скорости это можно сделать даже прямым запросом к БД. Так же по событию, разумеется)

READ ALSO
Сложение массивов на php после запроса sql

Сложение массивов на php после запроса sql

Идея, которую пытаюсь реализовать: для выбранных строк в таблице определить все столбцы, в которых есть данные, и получить (собрать) строку...

108
Порядок срабатывания событий, ajax

Порядок срабатывания событий, ajax

Пытаюсь подключить шорткод только на отдельной странице, чтобы лишний код не выполнялся на всех страницах, но ajax не работаетМожете объяснить...

126
Сделать выбор в php

Сделать выбор в php

Необходимо сделать, чтобы из строки

98
nginx полная изоляция приложения

nginx полная изоляция приложения

Нужно тестировать сайт который умеет работать только на 80 порту, но при этом на одном компьютере нужно запустить несколько версий приложенияЕсть...

124