Добрый день!
В курсе подготовки "Основные технологии и расширение типовых возможностей системы" одно из заданий к уроку 3 выглядит так:
Реализовать проверку – при удалении товара из каталога, проверять: если количество просмотров товара (поле SHOW_COUNTER) больше 1, то отменять удаление, деактивировать товар и выводить в административный раздел соответствующее уведомление с указанием количества просмотров.
Получилось отменить удаление и вывести сообщение, но товар при этом не деактивируется. Как это реализовать?
Код обработчика:
function OnBeforeIBlockElementDeleteHandler($id)
{
CModule::IncludeModule('iblock');
$element = \CIBlockElement::GetList(
[],
['ID' => $id],
false,
false,
['ID', 'IBLOCK_ID', 'SHOW_COUNTER']
)->GetNext();
if($element['IBLOCK_ID'] = CATALOG_IBLOCK_ID)
{
if($element['SHOW_COUNTER'] > 0) {
(new CIBlockElement())->Update($id, ['ACTIVE' => 'N']);
global $APPLICATION;
$APPLICATION->throwException('Количество просмотров больше одного, товар нельзя удалить!');
return false;
}
}
}
В курсе подготовки "Основные технологии и расширение типовых возможностей системы" одно из заданий к уроку 3 выглядит так:
Реализовать проверку – при удалении товара из каталога, проверять: если количество просмотров товара (поле SHOW_COUNTER) больше 1, то отменять удаление, деактивировать товар и выводить в административный раздел соответствующее уведомление с указанием количества просмотров.
Получилось отменить удаление и вывести сообщение, но товар при этом не деактивируется. Как это реализовать?
Код обработчика:
function OnBeforeIBlockElementDeleteHandler($id)
{
CModule::IncludeModule('iblock');
$element = \CIBlockElement::GetList(
[],
['ID' => $id],
false,
false,
['ID', 'IBLOCK_ID', 'SHOW_COUNTER']
)->GetNext();
if($element['IBLOCK_ID'] = CATALOG_IBLOCK_ID)
{
if($element['SHOW_COUNTER'] > 0) {
(new CIBlockElement())->Update($id, ['ACTIVE' => 'N']);
global $APPLICATION;
$APPLICATION->throwException('Количество просмотров больше одного, товар нельзя удалить!');
return false;
}
}
}