Search code examples
drupaldrupal-routes

Drupal 6 absolute wildcards in _menu(), is it possible?


is it possible to handle all wildcards in _menu() by module.

I know about specific wildcards like

display/page/% but that won't work for paths display/page/3/andOrderBy/Name

what If I want to handle unpredicted ammount of parameters like

display/page/3/12/45_2/candy/yellow/bmw/turbo

I want to have one display/* _menu() path to handle all ARGUMENTS.

how can I do it ?


Solution

  • Drupal will pass any additional URL elements as additional parameters to your hook_menu callback function - use func_get_args() in your callback to get them.

    So if you register only one wildcard display/page/%, but the actual request has two additional elements display/page/3/andOrderBy/Name, your callback will be passed '3' as an explicit parameter, but also 'andOrderBy' and 'Name' as implicit additional ones.

    Example callback:

    function yourModuleName_display_callback($page_number) {
      // Grab additional arguments
      $additional_args = func_get_args();
      // Remove first one, as we already got it explicitely as $page_number
      array_shift($additional_args);
      // Check for additional args
      if (!empty($additional_args)) {
        // Do something with the other arguments ...
      }
      // other stuff ...
    }