【发布时间】:2010-06-08 14:34:52
【问题描述】:
我想在没有安装文件夹参数的情况下检索当前页面路径别名。 我正在使用:
drupal_get_path_alias(request_uri())
但是这会返回安装/whatever/actual/path,我只想检索 actual/path,无论 installation/whatever是。
提前致谢:)
【问题讨论】:
标签: drupal drupal-path-aliases
我想在没有安装文件夹参数的情况下检索当前页面路径别名。 我正在使用:
drupal_get_path_alias(request_uri())
但是这会返回安装/whatever/actual/path,我只想检索 actual/path,无论 installation/whatever是。
提前致谢:)
【问题讨论】:
标签: drupal drupal-path-aliases
找到了。它实际上是两种建议的混合:
$current_path = drupal_get_path_alias($_GET["q"]);
谢谢。
更新:以前的解决方案并不总是有效
有人建议使用另一种方法:
str_replace(base_path(), '', drupal_get_path_alias(request_uri(), 1));
但是,有没有办法在不使用稍微昂贵的 str_replace 的情况下做同样的事情?
谢谢
【讨论】:
你所在节点的路径?
http://api.drupal.org/api/function/drupal_get_path_alias/6
if ($node || (arg(0) == 'node' && arg(2) != 'edit')) {
$system_path = 'node/'.arg(1);
$current_path = drupal_get_path_alias($system_path);
}
该代码将在节点页面上触发并告诉您页面别名。
有关更多信息,您可以转储 $_GET 并查看 'q' 查询字符串值。
【讨论】:
也许你可以像这样使用 base_path() 和 str_replace :
str_replace (base_path(), '', drupal_get_path_alias(request_uri()), 1);
base_path 保存在数据库中。
【讨论】:
$current_page_url = drupal_get_path_alias( implode( '/', arg() ) );
也可以
【讨论】:
你试过$_GET['q']吗?
【讨论】:
我倾向于使用完整的 url 来避免当 base_path() 不只是 '/' 时出现的任何问题。
$url = (($_SERVER['HTTPS'])?"https://":"http://") . $_SERVER['HTTP_HOST'] . url($_GET['q']);
或者更简单:
$url = url($_GET['q'], array('absolute'=>true));
【讨论】:
最快的解决方案。
substr(drupal_get_path_alias(request_uri(), 1), strlen(base_path()));
将其传递给参数
$arg = explode('/', substr(drupal_get_path_alias(request_uri(), 1), strlen(base_path())));
【讨论】: