function hook_url_outbound_alter

Alters outbound URLs.

Parameters

$path: The outbound path to alter, not adjusted for path aliases yet. It won't be adjusted for path aliases until all modules are finished altering it, thus being consistent with hook_url_inbound_alter(), which adjusts for all path aliases before allowing modules to alter it. This may have been altered by other modules before this one.

$options: A set of URL options for the URL so elements such as a fragment or a query string can be added to the URL.

$original_path: The original path, before being altered by any modules.

See also

url()

Related topics

2 functions implement hook_url_outbound_alter()

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

language_url_outbound_alter in drupal/core/modules/language/language.module
Implements hook_url_outbound_alter().
url_alter_test_url_outbound_alter in drupal/core/modules/system/tests/modules/url_alter_test/url_alter_test.module
Implements hook_url_outbound_alter().
1 invocation of hook_url_outbound_alter()
url in drupal/core/includes/common.inc
Generates an internal or external URL.

File

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

Code

function hook_url_outbound_alter(&$path, &$options, $original_path) {

  // Use an external RSS feed rather than the Drupal one.
  if ($path == 'rss.xml') {
    $path = 'http://example.com/rss.xml';
    $options['external'] = TRUE;
  }

  // Instead of pointing to user/[uid]/edit, point to user/me/edit.
  if (preg_match('|^user/([0-9]*)/edit(/.*)?|', $path, $matches)) {
    global $user;
    if ($user->uid == $matches[1]) {
      $path = 'user/me/edit' . $matches[2];
    }
  }
}