function hook_url_inbound_alter

You are here

7 system.api.php hook_url_inbound_alter(&$path, $original_path, $path_language)

Alters inbound URL requests.

Parameters

$path: The path being constructed, which, if a path alias, has been resolved to a Drupal path by the database, and which also may have been altered by other modules before this one.

$original_path: The original path, before being checked for path aliases or altered by any modules.

$path_language: The language of the path.

See also

drupal_get_normal_path()

Related topics

1 function implements hook_url_inbound_alter()

Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.

url_alter_test_url_inbound_alter in modules/simpletest/tests/url_alter_test.module
Implements hook_url_inbound_alter().
1 invocation of hook_url_inbound_alter()
drupal_get_normal_path in includes/path.inc
Given a path alias, return the internal path it represents.

File

modules/system/system.api.php, line 4223
Hooks provided by Drupal core and the System module.

Code

function hook_url_inbound_alter(&$path, $original_path, $path_language) {
  // Create the path user/me/edit, which allows a user to edit their account.
  if (preg_match('|^user/me/edit(/.*)?|', $path, $matches)) {
    global $user;
    $path = 'user/' . $user->uid . '/edit' . $matches[1];
  }
}

Comments

This replaces custom_url_rewrite_inbound() from Drupal 6.

From Dave Reid's comment at DrupalCoder that made this work for me:

custom_url_rewrite_inbound() or hook_url_inbound_alter() is run on DRUPAL_BOOTSTRAP_PATH (before most modules are loaded).

custom_url_rewrite_outbound() or hook_url_outbound_alter() is always run with DRUPAL_BOOTSTRAP_FULL (all modules loaded).

The trick is if you want to implement the inbound hooks, you have to make sure your module implements hook_boot() (can be just an empty function) so that it's loaded prior to the full bootstrap.

custom_url_rewrite_outbound was the drupal 6 solution for implementing this, and required hook_boot().
Implementing hook_url_inbound_alter or hook_url_outbound_alter don't require implementing hook_boot().

There is a handy Drupal 6 contrib module that provides this hook:
https://drupal.org/project/url_alter