Задача: очистить кэшированные данные товаров (по адресу /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); } } }
Спасибо!