hook_hook_info

6 core.php hook_hook_info()
7 system.api.php hook_hook_info()
8 system.api.php hook_hook_info()

Defines one or more hooks that are exposed by a module.

Normally hooks do not need to be explicitly defined. However, by declaring a hook explicitly, a module may define a "group" for it. Modules that implement a hook may then place their implementation in either $module.module or in $module.$group.inc. If the hook is located in $module.$group.inc, then that file will be automatically loaded when needed. In general, hooks that are rarely invoked and/or are very large should be placed in a separate include file, while hooks that are very short or very frequently called should be left in the main module file so that they are always available.

Return value

An associative array whose keys are hook names and whose values are an associative array containing:

  • group: A string defining the group to which the hook belongs. The module system will determine whether a file with the name $module.$group.inc exists, and automatically load it when required.

See system_hook_info() for all hook groups defined by Drupal core.

See also

hook_hook_info_alter().

Related topics

3 functions implement hook_hook_info()

File

modules/system/system.api.php, line 37
Hooks provided by Drupal core and the System module.

Code

function hook_hook_info() {
  $hooks['token_info'] = array(
    'group' => 'tokens',
  );
  $hooks['tokens'] = array(
    'group' => 'tokens',
  );
  return $hooks;
}

Comments

This hook is different from the hook used in Drupal 6

Despite the same name, this hook has a purpose that is different from the purpose it had in Drupal 6; for more details see Converting 6.x modules to 7.x.

These files do not need to be declared in the .info

Unlike most other include files making up a module, include files loaded this way do not need to be declared in the module info file.

Good practice to define them anyway

But its probably good practice to do it anyway to avoid any potential problems in the future.

~

no need to declare any code file in .info except for files contain interface and class.

Info file declarations no longer needed at all

Due to a late change in Drupal 7, only files that contain a class implementation need to be listed in the files[] declaration in the info file. It doesn't seem to make any sense to do any others.

Case where this hook won't work

If your implementation doesn't seem to load the file, as is the case for Field API modules, see this bug: http://drupal.org/node/977052

Login or register to post comments