我想在没有安装文件夹参数的情况下检索当前页面路径别名。我在用着:

drupal_get_path_alias(request_uri())

但这返回安装/erthing/实际/路径 我想检索 实际/路径 只有什么 安装/其他 是。

提前致谢 :)

有帮助吗?

解决方案

找到了。这实际上是两个建议的混合:

$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']?

我倾向于全力以赴,以避免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())));

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top