Hooks

  1. drupal
    1. 5
    2. 6
    3. 7
    4. 8

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 calls 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 in 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().

Functions & methods

NameDescription
custom_url_rewrite_inboundcustom_url_rewrite_inbound is not a hook, it's a function you can add to settings.php to alter incoming requests so they map to a Drupal path. This function is called before modules are loaded and the menu system is initialized and it changes…
custom_url_rewrite_outboundcustom_url_rewrite_outbound is not a hook, it's a function you can add to settings.php to alter all links generated by Drupal. This function is called from url(). This function is called very frequently (100+ times per page) so performance…
hook_accessDefine access restrictions.
hook_actions_deleteExecute code after an action is deleted.
hook_action_infoDeclare information about one or more Drupal actions.
hook_action_info_alterAlter the actions declared by another module.
hook_blockDeclare a block or set of blocks.
hook_bootPerform setup tasks. See also, hook_init.
hook_commentRespond to comment actions.
hook_cronPerform periodic actions.
hook_db_rewrite_sqlRewrite database queries, usually for access control.
hook_deleteRespond to node deletion.
hook_disablePerform necessary actions before module is disabled.
hook_elementsAllows modules to declare their own Forms API element types and specify their default values.
hook_enablePerform necessary actions after module is enabled.
hook_exitPerform cleanup tasks.
hook_file_downloadControl access to private file downloads and specify HTTP headers.
hook_filterDefine content filters.
hook_filter_tipsProvide tips for using filters.
hook_flush_cachesAdd a list of cache tables to be cleared.
hook_footerInsert closing HTML.
hook_formDisplay a node editing form.
hook_formsMap form_ids to builder functions.
hook_form_alterPerform alterations before a form is rendered.
hook_form_FORM_ID_alterProvide a form-specific alteration instead of the global hook_form_alter().
hook_helpProvide online user help.
hook_hook_infoExpose a list of triggers (events) that users can assign actions to.
hook_initPerform setup tasks. See also, hook_boot.
hook_insertRespond to node insertion.
hook_installInstall the current version of the database schema, and any other setup tasks.
hook_linkDefine internal Drupal links.
hook_link_alterPerform alterations before links on a node or comment are rendered.
hook_loadLoad node-type-specific information.
hook_localeAllows modules to define their own text groups that can be translated.
hook_mailPrepare a message based on parameters; called from drupal_mail().
hook_mail_alterAlter any aspect of email sent by Drupal. You can use this hook to add a common site footer to all outgoing email, add extra header fields, and/or modify the email in any way. HTML-izing the outgoing email is one possibility. See also drupal_mail().
hook_menuDefine menu items and page callbacks.
hook_menu_alterAlter the data being saved to the {menu_router} table after hook_menu is invoked.
hook_menu_link_alterAlter the data being saved to the {menu_links} table by menu_link_save().
hook_nodeapiAct on nodes defined by other modules.
hook_node_access_recordsSet permissions for a node to be written to the database.
hook_node_grantsInform the node access system what permissions the user has.
hook_node_infoDefine module-provided node types.
hook_node_operationsAdd mass node operations.
hook_node_typeAct on node type changes.
hook_openidAllow modules to modify the OpenID request parameters.
hook_permDefine user permissions.
hook_pingPing another server.
hook_prepareThis is a hook used by node modules. It is called after load but before the node is shown on the add/edit form.
hook_profile_alterAlter profile items before they are rendered.
hook_requirementsCheck installation requirements and do status reporting.
hook_schemaDefine the current version of the database schema.
hook_schema_alterPerforms alterations to existing database schemas.
hook_searchDefine a custom search routine.
hook_search_preprocessPreprocess text for the search index.
hook_system_info_alterAlter the information parsed from module and theme .info files
hook_taxonomyAct on taxonomy changes.
hook_term_pathAllows modules to provide an alternative path for the terms it manages.
hook_themeRegister a module (or theme's) theme implementations.
hook_theme_registry_alterAlter the theme registry information returned from hook_theme().
hook_translated_menu_link_alterAlter a menu link after it's translated, but before it's rendered.
hook_translation_link_alterPerform alterations on translation links.
hook_uninstallRemove any information that the module sets.
hook_updateRespond to node updating.
hook_update_indexUpdate Drupal's full-text index for this module.
hook_update_last_removedReturn a number which is no longer available as hook_update_N().
hook_update_NPerform a single update.
hook_update_projects_alterAlter the list of projects before fetching data and comparing versions.
hook_update_status_alterAlter the information about available updates for projects.
hook_userAct on user account actions.
hook_user_operationsAdd mass user operations.
hook_validateVerify a node editing form.
hook_viewDisplay a node.
hook_watchdogLog an event message
hook_xmlrpcRegister XML-RPC callbacks.
module_hookDetermine whether a module implements a hook.
module_implementsDetermine which modules are implementing a hook.
module_invokeInvoke a hook in a particular module.
module_invoke_allInvoke a hook in all enabled modules that implement it.
page_cache_fastpathOutputs a cached page.

includes/module.inc, line 364