如何获得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()
- http://example.com/node/306返回“node / 306”。
- http://example.com/drupalfolder/node/306返回“node / 306”,而base_path()返回“/ drupalfolder /”。
- http://example.com/path/alias (这是node / 306的path别名)返回“node / 306”而不是path别名。
和另一个微小差别的function
request_path()
- http://example.com/node/306返回“node / 306”。
- http://example.com/drupalfolder/node/306返回“node / 306”,而base_path()返回“/ drupalfolder /”。
- http://example.com/path/alias (这是node / 306的path别名)返回“path / alias”而不是内部path。
- http://example.com/index.php返回一个空string(意思是:首页)。;
- http://example.com/index.php?page=1返回一个空string。;
我发现使用令牌很干净。 它被集成到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'']
或者在这里阅读更多。