cancel
Showing results for 
Search instead for 
Did you mean: 

Отслеживание изменений в товарах с помощью observer

Отслеживание изменений в товарах с помощью observer

Добрый день всем.

 

Возникла необходимость отслеживать изменения в некоторых атрибутах продуктов (ску, название,..)

а также добавление, удаление продуктов.

 

Создал обсервер и попытался перехватывать события, связанные с указанными выше операциями.

Проблема в том, что:

1) необходима совместимость со версиями 1.6-1.9

2) некоторые ивенты не работают так, как заявлено, а для некоторых случаев - например массовые операции с продуктами - вообще не работают.

Я уж не говорю от том, что пр импорте сторонними пакетами (МАГМИ, например) - событий вообще нет.

Я просмотрел исходные коды - по сравнению с обработкой ордеров - разброд и шатания

 

Посмотрел подходящие события на более глубоком уровне - есть такое интересное событие model_save_commit_after.

Попробровал его покрутить - да, приходит объект, который был сохранен. Название модели присутствует.

Если я буду брать только объекты "catalog/product" а  остальные просто игнорировать - я могу уже просто фиксировать измнения в товарах (неважно, какие) - я их просто в свою таблицу запишу а уже потом в другом процессе пранализирую.

 

Вопрос в том - насколько я замедлю процесс, инициировавший событие и как это проверить.

По моему мнению, существенное замедление будет только при массовых изменениях.

 

Или может кто-то уже сталкивался с подобной проблемой и решил ее на более высоком уровне событий

 

Спасибо

5 REPLIES 5

Re: Отслеживание изменений в товарах с помощью observer

Совершенно не понятно что вы хотите, чего добиваетесь. На такой вопрос вразумительного ответа вряд-ли дождетесь.

Re: Отслеживание изменений в товарах с помощью observer

Прошу прощения за корявость речи, мне нужно узнать:

- как отслеживать изменения в атрибутах товарах, неважно каким способом они выполнены. Главное, чтобы это было в рамках магенто. Достаточно записать в custom таблицу id измененного товара, важен сам факт его изменения.

- как проверить, насколько будет замедляться работа при применении предложенного мной метода, когда я перехватываю все события model_save_after_commit.

- может существует другой способ для решения этой задачи?

Re: Отслеживание изменений в товарах с помощью observer

Отслеживать изменения сторонними программами, вроде Magmi вы средствами Magento не сможете.

 

Мы для одного из модулей использовали 

model_save_before, model_save_after, model_delete_before, catalog_model_product_duplicate.

Замедление будет зависеть от того, что вы делаете внутри.


ET Web Solutions
extensions, custom work, support

Re: Отслеживание изменений в товарах с помощью observer

Спасибо, большое.

 

Про МАГМИ я в курсе, часто пользуюсь, в коде ковырялся, там прямая работа с базой данных.

 

Грубо говоря, собираюсь сделать следующее при попадании в мой observer:

- если модель не "category/product" - ничего не делать, просто вернуть управление назад в магенто

- если модель "category/product" - взять данные из _data и _origData и записать их в свою таблицу (прямо в базу данных, без использования модели для таблицы)

 

А анализ изменений уже будет в другом месте.

 

Вот и все.

Re: Отслеживание изменений в товарах с помощью observer

Ведь все зависит от того как эти атрибуты меняются. Очевидно, что если средствами Magmi, то нужно вешать тригеры на уровне MySQL. Если атрибуты меняются при сохранении товара после редактирования, то соответственно можно перехватывать конкретные события ну и т.п. Да вы это собственно и так понимаете :-). Отсюда и сомнения в правильности понимания вопроса.