Задача: очистить кэшированные данные товаров (по адресу /bitrix/cache/products/id товара/), если количество товара изменилось.
Решение.
В этой ситуации поможет событие OnProductUpdate(id, arFields) модуля catalog. Первый аргумент — это id товара, а второй массив данных товара. При изменении количества(кроме свойства QUANTITY) появляется свойство OLD_QUANTITY, которое мы можем использовать в своих целях.
В файле init.php добавьте обработчик события:
AddEventHandler('catalog', 'OnProductUpdate', ['MyClass', 'OnProductUpdateHandler']);
class MyClass
{
function OnProductUpdateHandler($id, $arFields)
{
if(($arFields['QUANTITY'] != $arFields['OLD_QUANTITY'] ) || (!is_null($arFields['QUANTITY']) && is_null($arFields['OLD_QUANTITY']))){
$cache = new CPHPCache();
$cache_id = 'product';
$cache_path = '/products/' . $id. '/';
$cache->Clean($cache_id, $cache_path);
}
}
}
Спасибо!