diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2008-11-25 02:37:33 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2008-11-25 02:37:33 +0000 |
commit | 66df602593230a2483d6538927fd66310c28c3f8 (patch) | |
tree | 2aade9b5d8e859acbb252915a86ed6da3ff133de /modules/menu | |
parent | b5e0a12fa9735679ca7b0d7f8a951d6840344321 (diff) | |
download | brdo-66df602593230a2483d6538927fd66310c28c3f8.tar.gz brdo-66df602593230a2483d6538927fd66310c28c3f8.tar.bz2 |
#314870 by Rob Loach, drewish, catch, and sun: Add hook API documentation to Drupal core.
Diffstat (limited to 'modules/menu')
-rw-r--r-- | modules/menu/menu.api.php | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/modules/menu/menu.api.php b/modules/menu/menu.api.php new file mode 100644 index 000000000..7c1543a6d --- /dev/null +++ b/modules/menu/menu.api.php @@ -0,0 +1,146 @@ +<?php +// $Id$ + +/** + * @file + * Hooks provided by the Menu module. + */ + +/** + * @addtogroup hooks + * @{ + */ + +/** + * Define menu items and page callbacks. + * + * This hook enables modules to register paths, which determines whose + * requests are to be handled. Depending on the type of registration + * requested by each path, a link is placed in the the navigation block and/or + * an item appears in the menu administration page (q=admin/menu). + * + * This hook is called rarely - for example when modules are enabled. + * + * @return + * An array of menu items. Each menu item has a key corresponding to the + * Drupal path being registered. The item is an associative array that may + * contain the following key-value pairs: + * + * - "title": Required. The untranslated title of the menu item. + * - "description": The untranslated description of the menu item. + * - "page callback": The function to call to display a web page when the user + * visits the path. If omitted, the parent menu item's callback will be used + * instead. + * - "page arguments": An array of arguments to pass to the page callback + * function. Integer values pass the corresponding URL component (see arg()). + * - "access callback": A function returning a boolean value that determines + * whether the user has access rights to this menu item. Defaults to + * user_access() unless a value is inherited from a parent menu item.. + * - "access arguments": An array of arguments to pass to the access callback + * function. Integer values pass the corresponding URL component. + * - "weight": An integer that determines relative position of items in the + * menu; higher-weighted items sink. Defaults to 0. When in doubt, leave + * this alone; the default alphabetical order is usually best. + * - "menu_name": Optional. Set this to a custom menu if you don't want your + * item to be placed in Navigation. + * - "type": A bitmask of flags describing properties of the menu item. + * Many shortcut bitmasks are provided as constants in menu.inc: + * - MENU_NORMAL_ITEM: Normal menu items show up in the menu tree and can be + * moved/hidden by the administrator. + * - MENU_CALLBACK: Callbacks simply register a path so that the correct + * function is fired when the URL is accessed. + * - MENU_SUGGESTED_ITEM: Modules may "suggest" menu items that the + * administrator may enable. + * - MENU_LOCAL_TASK: Local tasks are rendered as tabs by default. + * - MENU_DEFAULT_LOCAL_TASK: Every set of local tasks should provide one + * "default" task, that links to the same path as its parent when clicked. + * If the "type" key is omitted, MENU_NORMAL_ITEM is assumed. + * + * For a detailed usage example, see page_example.module. + * + * For comprehensive documentation on the menu system, see + * http://drupal.org/node/102338. + * + */ +function hook_menu() { + $items = array(); + + $items['blog'] = array( + 'title' => 'blogs', + 'page callback' => 'blog_page', + 'access arguments' => array('access content'), + 'type' => MENU_SUGGESTED_ITEM, + ); + $items['blog/feed'] = array( + 'title' => t('RSS feed'), + 'page callback' => 'blog_feed', + 'access arguments' => array('access content'), + 'type' => MENU_CALLBACK, + ); + + return $items; +} + +/** + * Alter the data being saved to the {menu_router} table after hook_menu is invoked. + * + * This hook is invoked by menu_router_build(). The menu definitions are passed + * in by reference. Each element of the $callbacks array is one item returned + * by a module from hook_menu. Additional items may be added, or existing items + * altered. + * + * @param $callbacks + * Associative array of menu router definitions returned from hook_menu(). + * @return + * None. + */ +function hook_menu_alter(&$callbacks) { + // Example - disable the page at node/add + $callbacks['node/add']['access callback'] = FALSE; +} + +/** + * Alter the data being saved to the {menu_links} table by menu_link_save(). + * + * @param $item + * Associative array defining a menu link as passed into menu_link_save(). + * @param $menu + * Associative array containg the menu router returned from menu_router_build(). + * @return + * None. + */ +function hook_menu_link_alter(&$item, $menu) { + // Example 1 - make all new admin links hidden (a.k.a disabled). + if (strpos($item['link_path'], 'admin') === 0 && empty($item['mlid'])) { + $item['hidden'] = 1; + } + // Example 2 - flag a link to be altered by hook_translated_menu_link_alter() + if ($item['link_path'] == 'devel/cache/clear') { + $item['options']['alter'] = TRUE; + } +} + +/** + * Alter a menu link after it's translated, but before it's rendered. + * + * This hook may be used, for example, to add a page-specific query string. + * For performance reasons, only links that have $item['options']['alter'] == TRUE + * will be passed into this hook. The $item['options']['alter'] flag should + * generally be set using hook_menu_link_alter(). + * + * @param $item + * Associative array defining a menu link after _menu_link_translate() + * @param $map + * Associative array containing the menu $map (path parts and/or objects). + * @return + * None. + */ +function hook_translated_menu_link_alter(&$item, $map) { + if ($item['href'] == 'devel/cache/clear') { + $item['localized_options']['query'] = drupal_get_destination(); + } +} + +/** + * @} End of "addtogroup hooks". + */ |