[drupal-devel] [bug] patch: allow url_alias paths to have arguments
jhenry
drupal-devel at drupal.org
Thu Jul 21 15:39:26 UTC 2005
Issue status update for
http://drupal.org/node/27206
Post a follow up:
http://drupal.org/project/comments/add/27206
Project: Drupal
Version: 4.6.0
Component: base system
Category: bug reports
Priority: normal
Assigned to: jhenry
Reported by: jhenry
Updated by: jhenry
Status: patch
Currently, urls that use the url_alias table do not allow arguments.
This is not desirable because it is useful to be able to specify
arguments on a script that is aliased without having to refer to it by
node number.
The code below replaces the drupal_get_normal_path() function in
common.inc to allow aliased paths to have arguments.
/**
* Given a path alias, return the internal path it represents.
*/
function drupal_get_normal_path($path) {
if (($map = drupal_get_path_map()) && isset($map[$path])) {
return $map[$path];
}
elseif (function_exists('conf_url_rewrite')) {
return conf_url_rewrite($path, 'incoming');
}
else {
//look at each of the path components of $path and allow extra
components to be arguments
//do a greedy search first for the largest paths
if ($map && (strpos($path, '/') !== false)) {
$newpath = clone($path);
$args = '';
while($path_end = strrpos($newpath, '/')) {
$args = substr($newpath, $path_end).$args;
$newpath = substr($newpath, 0, $path_end);
//check to see if this new path exists in the path map
if(isset($map[$newpath])) {
return $map[$newpath].$args;
}
}
}
//no alias was found, return the original path
return $path;
}
}
jhenry
More information about the drupal-devel
mailing list