function page_example_menu in Examples for Developers 7
Same name and namespace in other branches
- 6 page_example/page_example.module \page_example_menu()
Implements hook_menu().
Because hook_menu() registers URL paths for items defined by the function, it is necessary for modules that create pages. Each item can also specify a callback function for a given URL. The menu items returned here provide this information to the menu system.
We will define some menus, and their paths will be interpreted as follows:
If the user accesses http://example.com/?q=examples/page_example/simple, the menu system will first look for a menu item with that path. In this case it will find a match, and execute page_example_simple().
If the user accesses http://example.com/?q=examples/page_example/arguments, the menu system will find no explicit match, and will fall back to the closest match, 'examples/page_example', executing page_example_description().
If the user accesses http://example.com/?q=examples/page_example/arguments/1/2, the menu system will first look for examples/page_example/arguments/1/2. Not finding a match, it will look for examples/page_example/arguments/1/%. Again not finding a match, it will look for examples/page_example/arguments/%/2. Yet again not finding a match, it will look for examples/page_example/arguments/%/%. This time it finds a match, and so will execute page_example_arguments(1, 2). Since the parameters are passed to the function after the match, the function can do additional checking or make use of them before executing the callback function.
See also
Related topics
File
- page_example/
page_example.module, line 102 - Module file for page_example_module.
Code
function page_example_menu() {
// This is the minimum information you can provide for a menu item. This menu
// item will be created in the default menu, usually Navigation.
$items['examples/page_example'] = array(
'title' => 'Page Example',
'page callback' => 'page_example_description',
'access callback' => TRUE,
'expanded' => TRUE,
);
$items['examples/page_example/simple'] = array(
'title' => 'Simple - no arguments',
'page callback' => 'page_example_simple',
'access arguments' => array(
'access simple page',
),
);
// By using the MENU_CALLBACK type, we can register the callback for this
// path without the item appearing in the menu; the admin cannot enable the
// item in the menu, either.
//
// Notice that 'page arguments' is an array of numbers. These will be
// replaced with the corresponding parts of the menu path. In this case a 0
// would be replaced by 'examples', a 1 by 'page_example', and a 2 by
// 'arguments.' 3 and 4 will be replaced by whatever the user provides.
// These will be passed as arguments to the page_example_arguments() function.
$items['examples/page_example/arguments/%/%'] = array(
'page callback' => 'page_example_arguments',
'page arguments' => array(
3,
4,
),
'access arguments' => array(
'access arguments page',
),
'type' => MENU_CALLBACK,
);
return $items;
}