Хуки сторонних модулей

Рассмотрим модули сторонних разработчиков:

  1. Модуль АВ SEO Фильтры (priority - 100000000)
  2. Свой кастовый модуль изменений My Changes (priority - 98001)

В модуле My Changes необходимо сделать изменения для SEO Фильтры. Для этого разработчики АВ зарегистрировали в своем модуле хук ab__sf_category_preparing_data_pre При подключении к хуку распечатаем последовательность выполнения кода. Код выполняется в таком порядке:

  1. подключение к хуку в модуле My Changes
  2. код модуля SEO Фильтры в котором этот хук объявлен

Как так получается, что подключенный к хуку код выполняется до самого кода в котором он зарегистрирован? А дело в приоритете ‘priority’ в addon.xml - модуль My Changes имеет меньший приоритет 98001, а значит выполняется до модуля SEO Фильтры с большим приоритетом - 100000000 Но хуки должны вызываться только при выполнении кода в котором они объявлены.

1 лайк

А что у вас получилось при смене приоритета my_changes ?

Я может что-то не понимаю в архитектуре карта, но разве подключение к хуку - это не функция, которая вызывается из кода/функции в данном случае АВммодуля? В вашем модуле подключаемая к хуку функция только объявляется, и вызывается, когда работает другая функция из АВ модуля с этим хуком. А приоритет нужен лишь для того, чтобы упорядочить работу функций модулей, подключенных к одному хуку.
Я так всё время понимал обстоятельства дела…

Тема закрыта, к хуку подключались другие модули с также высоким приоритетом и перезаписывали My changes.