如何获取Drupal页面的完整URL?

46 php drupal content-management-system

我需要在Drupal站点中抓取当前页面的URL.它的内容类型无关紧要 - 可以是任何类型的节点.

我不是在寻找主题,基本网址或Drupal的get_destination的路径.我正在寻找一个函数或变量,它将完整地给我以下内容:

http://example.com/node/number

有或没有(更有可能)http://.

Eat*_*ton 53

drupal_get_destination()有一些内部代码指向正确的位置以获取当前内部路径.要将该路径转换为绝对URL,url()函数应该可以解决问题.如果传递'绝对'选项,它将生成完整的URL,而不仅仅是内部路径.它还将交换当前路径的任何路径别名.

$path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$link = url($path, array('absolute' => TRUE));
Run Code Online (Sandbox Code Playgroud)


mik*_*wn2 37

这是我发现有用的东西

global $base_root;
$base_root . request_uri();
Run Code Online (Sandbox Code Playgroud)

返回查询字符串,它是core中使用的内容:page_set_cache()


小智 19

你也可以这样做:

$current_url = 'http://' .$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
Run Code Online (Sandbox Code Playgroud)

它有点快.

  • 始终编​​程到接口而不是实现. (5认同)

ax.*_*ax. 14

请尝试以下方法:

url($_GET['q'], array('absolute' => true));
Run Code Online (Sandbox Code Playgroud)

  • 这是一个更多的drupaly:url(current_path(),array('absolute'=> true)); (2认同)

Yus*_*sef 12

这个方法都是老方法,在drupal 7中我们可以很简单

    current_path()
Run Code Online (Sandbox Code Playgroud)

和另一个微小差异的功能

request_path()
Run Code Online (Sandbox Code Playgroud)


Ser*_*jev -1

也许您想要的只是普通的旧预定义变量。

考虑尝试

$_SERVER['REQUEST_URI'']
Run Code Online (Sandbox Code Playgroud)

或者在这里阅读更多内容。