Событие, срабатывающее при обновлении количества товара

Задача: очистить кэшированные данные товаров (по адресу /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);
		}
	}       
}
ПоделитьсяShare on Facebook0Share on VKShare on Google+0Tweet about this on TwitterShare on LinkedIn0Pin on Pinterest0

1 комментарий

Добавить комментарий