Same name and namespace in other branches
- 10 core/core.api.php \hooks
- 4.6.x includes/module.inc \hooks
- 4.7.x includes/module.inc \hooks
- 6.x includes/module.inc \hooks
- 7.x includes/module.inc \hooks
- 8.9.x core/core.api.php \hooks
- 9 core/core.api.php \hooks
Allow modules to interact with the Drupal core.
Drupal's module system is based on the concept of "hooks". A hook is a PHP function that is named foo_bar(), where "foo" is the name of the module (whose filename is thus foo.module) and "bar" is the name of the hook. Each hook has a defined set of parameters and a specified result type.
To extend Drupal, a module need simply implement a hook. When Drupal wishes to allow intervention from modules, it determines which modules implement a hook and call that hook in all enabled modules that implement it.
The available hooks to implement are explained here in the Hooks section of the developer documentation. The string "hook" is used as a placeholder for the module name is the hook definitions. For example, if the module file is called example.module, then hook_help() as implemented by that module would be defined as example_help().
File
- includes/
module.inc, line 289 - API for loading and interacting with Drupal modules.
Functions
Name | Location | Description |
---|---|---|
module_invoke_all |
includes/ |
Invoke a hook in all enabled modules that implement it. |
module_invoke |
includes/ |
Invoke a hook in a particular module. |
module_implements |
includes/ |
Determine which modules are implementing a hook. |
module_hook |
includes/ |
Determine whether a module implements a hook. |
hook_xmlrpc |
developer/ |
Register XML-RPC callbacks. |
hook_view |
developer/ |
Display a node. |
hook_validate |
developer/ |
Verify a node editing form. |
hook_user_operations |
developer/ |
Add mass user operations. |
hook_user |
developer/ |
Act on user account actions. |
hook_update_N |
developer/ |
Perform a single update. |
hook_update_index |
developer/ |
Update Drupal's full-text index for this module. |
hook_update |
developer/ |
Respond to node updating. |
hook_uninstall |
developer/ |
Remove any tables or variables that the module sets. |
hook_taxonomy |
developer/ |
Act on taxonomy changes. |
hook_submit |
developer/ |
This is a hook used by node modules. It is called after validation has succeeded and before insert/update. It is used to for actions which must happen only if the node is to be saved. Usually, $node is changed in some way and then the actual saving of… |
hook_search_preprocess |
developer/ |
Preprocess text for the search index. |
hook_search |
developer/ |
Define a custom search routine. |
hook_requirements |
developer/ |
Check installation requirements that need to be satisfied. |
hook_profile_alter |
developer/ |
Perform alterations profile items before they are rendered. You may omit/add/re-sort/re-categorize, etc. |
hook_prepare |
developer/ |
This is a hook used by node modules. It is called after load but before the node is shown on the add/edit form. |
hook_ping |
developer/ |
Ping another server. |
hook_perm |
developer/ |
Define user permissions. |
hook_node_type |
developer/ |
Act on node type changes. |
hook_node_operations |
developer/ |
Add mass node operations. |
hook_node_info |
developer/ |
Define module-provided node types. |
hook_node_grants |
developer/ |
Inform the node access system what permissions the user has. |
hook_node_access_records |
developer/ |
Set permissions for a node to be written to the database. |
hook_nodeapi |
developer/ |
Act on nodes defined by other modules. |
hook_menu |
developer/ |
Define menu items and page callbacks. |
hook_mail_alter |
developer/ |
Alter any aspect of the emails sent by Drupal. You can use this hook to add a common site footer to all outgoing emails; add extra header fields and/or modify the mails sent out in any way. HTML-izing the outgoing mails is one possibility. See also… |
hook_load |
developer/ |
Load node-type-specific information. |
hook_link_alter |
developer/ |
Perform alterations before links on a node are rendered. One popular use of this hook is to modify/remove links from other modules. If you want to add a link to the links section of a node, use hook_link instead. |
hook_link |
developer/ |
Define internal Drupal links. |
hook_install |
developer/ |
Install the current version of the database schema. |
hook_insert |
developer/ |
Respond to node insertion. |
hook_init |
developer/ |
Perform setup tasks. |
hook_info |
developer/ |
Declare authentication scheme information. |
hook_help |
developer/ |
Provide online user help. |
hook_form_alter |
developer/ |
Perform alterations before a form is rendered. |
hook_forms |
developer/ |
Map form_ids to builder functions. |
hook_form |
developer/ |
Display a node editing form. |
hook_footer |
developer/ |
Insert closing HTML. |
hook_filter_tips |
developer/ |
Provide tips for using filters. |
hook_filter |
developer/ |
Define content filters. |
hook_file_download |
developer/ |
Allow file downloads. |
hook_exit |
developer/ |
Perform cleanup tasks. |
hook_enable |
developer/ |
Perform necessary actions after module is enabled. |
hook_elements |
developer/ |
Allows modules to declare their own form element types and specify their default values. |
hook_disable |
developer/ |
Perform necessary actions before module is disabled. |
hook_delete |
developer/ |
Respond to node deletion. |
hook_db_rewrite_sql |
developer/ |
Add JOIN and WHERE statements to queries and decide whether the primary_field shall be made DISTINCT. For node objects, primary field is always called nid. For taxonomy terms, it is tid and for vocabularies it is vid. For comments, it is cid. Primary… |
hook_cron |
developer/ |
Perform periodic actions. |
hook_comment |
developer/ |
Act on comments. |
hook_block |
developer/ |
Declare a block or set of blocks. |
hook_auth |
developer/ |
Verify authentication of a user. |
hook_access |
developer/ |
Define access restrictions. |
custom_url_rewrite |
developer/ |
custom_url_rewrite is not a hook. It is a function you can add to settings.php to manage aliases with some code. |