Контроль порядка выполнения хуков в шаблоне

Есть планин А, есть плагин Б. Оба плагина с помощью хука Hook_1 делают инъекцию кода в шаблон.
Как упорядочить очередность инъекции через один хук?

Нашел lifehack, вручную прописать очередность подключения плагинов в plugins.dat, но это поможет не всегда.
Если кто знает, подскажите, пожалуйста.

9 комментариев

avatar
но это поможет не всегда.
Ну как не всегда… До следующего перемешивания плагинов в plugins.dat

По-другому, без вмешательства в код плагинов, боюсь никак. А так — в AddHook четвертым параметром идет как раз приоритет выполнения функции. Т.е. в зависимости от нужного порядка делаете у первого плагина это значение беольше (или меньше) чем у второго.
avatar
Не, ну наверное можно еще написать какую-нибудь страшную функцию, которая анализирует порядок хуков плагинов и устанавливает нужный порядок… Но это уже совсем другая история :)
avatar
Спасибо.
avatar
Зачем, если можно создать новый хук отдельно для каждого плагина?
avatar
0_o

В шаблоне есть хук, например, Hook_1.
Оба плагина претендуют на вывод своих хуков в это место. Какой смысл делать дополнительный хук в шаблоне, тем более, что это существенно влияет на совместимость плагинов с шаблонами?
avatar
Правильно, Hook_1 не удаляем, а делаем Hook_2 для другого плагина, никаких конфликтов если сделать правильно… У меня вроде все работает, в свое время другого решения не придумал
avatar
Под Hook_1 я имел ввиду место в шаблоне, где выполняются хуки.
Если мы сделаем в этом же шаблоне, рядом, новое место под вывод Hook_2, то получится несовместимость с другими шаблонами, где место под вывод Hook_2 неопределено.
Это нормально, если делать только для себя, но если для публики, то люди столкнутся с необходимостью правки шаблона. Это не плохо, просто неудобно.
avatar
У хуков есть приоритеты — docs.livestreetcms.com/api/1.0/Hook#AddHook-detail
  • ort
  • 0
avatar
Спасибо, ort!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.