page_example_menu

  1. drupal
    1. 4.7 page_example.module
    2. 5 page_example.module
    3. 6
    4. 7
Versions
4.7 – 5 page_example_menu($may_cache)
6 – 7 page_example_menu()

Implements hook_menu().

hook_menu() must be implemented to emit items to place in the main menu. This is a required step for modules wishing to display their own pages, because the process of creating the links also tells Drupal what callback function to use for a given URL. The menu items returned here provide this information to the menu system.

With the below menu definitions, URLs will be interpreted as follows:

If the user accesses http://example.com/?q=examples/page_example/simple, then 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, no match will be found, so the system will look for 'examples/page_example', which exists, and that page will be displayed.

If the user accesses http://example.com/?q=examples/page_example/arguments, the menu system will find no explicit match so will fall back to execute 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 without resulting to the arg() function.

The Menu Example provides extensive examples for hook_menu().

Code

examples/page_example/page_example.module, line 84

<?php
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.
  $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 but do not have the item show up in the menu; the admin is not allowed
  // to enable the item in the menu, either.
  //
  // Notice that the '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 'example', a 1 by 'arguments', and like wise 2 and 3 will
  // be replaced by what ever 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;
}
?>