Хуки

Хук - PHP функция, которая вызывается при определенных условиях с какой-то конкретной целью.

Хуки имеют вид hook_name() и состоят из двух частей:

  1. hook - отражает что функция, является хуком. Данное слово в названии функции заменяется на машинное име модуля или темы, которые реализуют данный хук.
  2. name - название хука, которое остается неизменным.

Например, если хук имеет название hook_to_rule_them_all(), а ваш модуль или тема имеет машинное имя my_precious, то для реализации данного хука, вам необходимо создать функцию my_precious_to_rule_them_all().

Разновидности хуков

Хуки можно разделить на два типа:

  1. Исполняемые хуки — это те хуки, которые вызываются и производят какие-то действия. Они могут как иметь возврат данных при помощи return, так и не иметь его. Также, они могут вызываться с передачей аргументов по ссылке. Такие хуки - хуки общего назначения. Их поведение сильно зависит от того, с какой целью они вызываются. Например, Drupal, прежде чем вызвать какой-то шаблон оформления для темы, вызывает соответствующие preprocess хуки, в которых модули и темы могут подготовить переменные для темплейтов, повлиять на входящие и исходящие данные.
  2. Альтер хуки — данные хуки всегда вызываются с одной единственной целью - возможностью повлиять на данные. В них всегда приходят аргументы по ссылке, которые вы можете либо поменять, либо не трогать. Например, Drupal, прежде чем отправить форму, созданную при помощи Form API на обработку и конвертацию в HTML разметку, вызывает соответствующие альтер хуки, чтобы модули могли повлиять на данную форму: добавить новые элементы, удалить или изменить существующие, внедриться в валидацию или отправку, отредактировать принятые данные и т.д.

Где писать хуки?

Хуки можно реализовывать как в модулях, так и в темах оформления.

В случае с модулем, хуки обычно реализуют в файле *.module, а в случае темы оформления в файле *.theme.

Хуки можно выносить в отдельные файлы, некоторые хуки поддерживают автоподгрузку файлов по своей группе, но для этого убедитесь, что файл, в котором вы реализуете хук, будет загружен в процессе обработки запроса, иначе хук не будет вызываться.

Смотрите также

Ссылки

🌱 Помогите нам сделать документацию лучше!

Вся документация Druki с отрытым исходным кодом. Нашли ошибку или неточность? Создайте pull request.

Редактировать текущий документ Обсудить улучшение

Или узнайте как контрибутить.

🤔 По-прежнему нужна помощь?

Не нашли ответа на свой вопрос? Попросите помощи у сообщества!

Задайте вопрос на GitHub Смотрите другие ресурсы сообщества