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

我需要在Drupal站点中抓取当前页面的URL。 不pipe它是什么内容types都可以 – 可以是任何types的节点。

我不在寻找主题,或基地的url,或Drupal的get_destination的path。 我正在寻找一个函数或variables,会给我以下的全部:

http://example.com/node/number

无论有或没有(更可能) http://

drupal_get_destination()有一些内部代码指向正确的地方来获取当前的内部path。 要将该path转换为绝对URL, url()函数应该可以做到这一点。 如果传入“绝对”选项,则会生成完整的URL,而不仅仅是内部path。 它也将交换当前path的任何path别名。

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

这是我发现有用的

 global $base_root; $base_root . request_uri(); 

返回查询string,它是核心中使用的内容: page_set_cache()

你也可以这样做:

 $current_url = 'http://' .$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 

这有点快

尝试以下操作:

 url($_GET['q'], array('absolute' => true)); 

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

  current_path() 

和另一个微小差别的function

 request_path() 

我发现使用令牌很干净。 它被集成到Drupal 7的核心中。

 <?php print token_replace('[current-page:url]'); ?> 

以下是更多的Drupal-ish

 url(current_path(), array('absolute' => true)); 

对于Drupal 8,你可以这样做:

 $url = 'YOUR_URL'; $url = \Drupal\Core\Url::fromUserInput('/' . $url, array('absolute' => 'true'))->toString(); 

也许你想要的只是普通的预定义variables。

考虑尝试

 $_SERVER['REQUEST_URI''] 

或者在这里阅读更多。