function 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

hook_menu()

Example: Menu

Related topics

File

page_example/page_example.module, line 102

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;
}