Как я могу создать свой собственный хук (аналогичный тому, который создает ядро Drupal) для использования другими модулями Drupal?
Как я могу создать свой собственный хук (аналогичный тому, который создает ядро Drupal) для использования другими модулями Drupal?
Ответы:
Вы на самом деле не создаете хуки. Вы используете вспомогательные функции, такие как module_invoke_all()
, module_invoke()
или drupal_alter()
для вызова всех функций, соответствующих ожидаемому шаблону имени. Вызванные функции обычно находятся с module_implements()
.
Даже если для работы хуков нет необходимости, лучше всего документировать их MODULE.api.php
, создавая пустые функции- заглушки hook_NAME
с комментариями к документации .
Вы также можете создать ловушку, используя hook_trigger_info, вы можете создать новую ловушку, и в вашем модуле вам необходимо ее реализовать. В качестве примера предположим, что вы хотите создать архив узлов и поместить в него старые узлы. Вы также хотите вызвать ловушку, когда операция архивирования завершена. это будет нечто подобное
function hook_trigger_info() {
return array(
'node' => array(
'archive_nodes' => array(
'label' => t('Archive old nodes'),
)
)
);
}
После определения ловушки, ваш модуль отвечает за реализацию ловушки и действий с помощью module_invoke () или module_invoke_all () .
Вы можете включить trigger
модуль, чтобы увидеть этот новый хук на вкладке узла.