Нужны хуки product_before_save и category_before_save :)
Недостатком существующих хуков product_save и category_save является то, что они вызываются после изменения и узнать предыдущее состояние возможно только храня это состояние где-то еще (по сути копия базы товаров/категорий).
Например, в Битрикс, почти всегда есть события с приставкой before и after. Естественно, события before нужны для получения результатов операции, а after для того, чтобы иметь возможность манипулировать входными данными или прервать операцию.
8 комментариев
А если еще нет айдишника?
Если еще нет айдишника, то можно только манипулировать входными данными нового товара/категории, например, заменить по своим правилам url, title, и прочие входные данные без лишнего запроса к БД.
Но зато если есть ID, тогда можно воспользоваться последним шансом получить текущее состояние товара, а также предотвратить какие-то изменения, в том числе и через импорт.
Я их, с одной стороны, понимаю. Разработчики вебасист как бы всегда в окружении врагов. Представьте себе, что вы впустили стадо обезьян в посудную лавку и пытаетесь объяснить им, чтобы не не трогали наборы из античных ваз династии Мин.
Представили?
А теперь представьте, что у каждой обезьяны в руках по дробовику.
Примерно по тем же причинам они не хотят давать нам доступ к подобным вещам. Хотя это дало бы огромные возможности для всех.
Понимаю. Но тогда получат "троянского коня" ))) то есть в своем плагине я вынужден буду создать копии таблиц по товарам и категориям. Чтобы иметь возможность сравнивать "было - стало".
Вы посоветуйтесь сначала более детально. Может чего дельного подскажут. Такую монструозную конструкцию точно не пропустят.
Так вот я и прошу.....дайте новые хуки ))))) пусть даже без вмешательства в данные. Перед изменением, я получу ID товара/категории закину в глобальную переменную нужные мне данные, а уже на хуке product_save проведу сравнение.
Такой "хук" можно и самому сделать, добавив в форму редактирования скрытые поля, значение которых будет равно оригинальным. И уже в хуке сравнивать hidden_title c title из post/instance.
Евгений, это конечно замечательно, но не будет работать при импорте через CSV :)