Выносим хуки за пределы файла .module

В некоторых модулях накапливается большое количество имплементаций хуков, из-за чего файл .module очень разрастается. В результате поиск нужного куска кода в файле усложняется. Чтобы разрулить данную ситуацию, на помощь приходит hook_hook_info, который позволяет разнести имплементации хуков по разным файлам и при необходимости сгруппировать их.

Для примера возьмем четыре хука: hook_node_insert, hook_node_delete, hook_comment_insert и hook_comment_delete. Вынесем их в разные файлы и сгруппируем хуки для нод и для комментариев отдельно:


function mymodule_hook_info() {
  $hooks['node_insert'] = array(
    'group' => 'node'
  );
  $hooks['node_delete'] = array(
    'group' => 'node'
  );
  $hooks['comment_insert'] = array(
    'group' => 'comment'
  );
  $hooks['comment_delete'] = array(
    'group' => 'comment'
  );
  return $hooks;
}

После этого создаем в корне модуля два файла mymodule.node.inc и mymodule.comment.inc. В файле mymodule.node.inc теперь будут имплементироваться hook_node_insert и hook_node_delete , а в mymodule.comment.inc - hook_comment_insert и hook_comment_delete соответственно.