Как получить полный URL-адрес страницы Drupal?
Мне нужно захватить URL-адрес текущей страницы на сайте Drupal. Неважно, какой тип контента он есть - может быть любой тип node.
Я НЕ ищу путь к теме, или базовый url, или Drupal get_destination. Я ищу функцию или переменную, которая даст мне следующее:
http://example.com/node/number
Либо с или без (более вероятно) http://
.
Ответы
Ответ 1
drupal_get_destination() содержит некоторый внутренний код, который указывает на правильное место, чтобы получить текущий внутренний путь. Чтобы перевести этот путь в абсолютный URL, функция url() должна сделать трюк. Если "абсолютная" опция передана в нее, она будет генерировать полный URL, а не только внутренний путь. Он также будет заменять любые псевдонимы пути для текущего пути.
$path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$link = url($path, array('absolute' => TRUE));
Ответ 2
Вот что я нашел полезным
global $base_root;
$base_root . request_uri();
Возвращает строки запросов и то, что используется в ядре: page_set_cache()
Ответ 3
Вы также можете сделать это следующим образом:
$current_url = 'http://' .$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
Это немного быстрее.
Ответ 4
Попробуйте следующее:
url($_GET['q'], array('absolute' => true));
Ответ 5
Этот метод является старым методом, в drupal 7 мы можем получить его очень просто
current_path()
и другая функция с малой разницей
request_path()
Ответ 6
Я использую токены довольно чистыми.
Он интегрирован в ядро в Drupal 7.
<?php print token_replace('[current-page:url]'); ?>
Ответ 7
Ниже приведено больше Drupal-ish:
url(current_path(), array('absolute' => true));
Ответ 8
Для Drupal 8 вы можете сделать это:
$url = 'YOUR_URL';
$url = \Drupal\Core\Url::fromUserInput('/' . $url, array('absolute' => 'true'))->toString();
Ответ 9
Возможно, что вы хотите, это просто старые предопределенные переменные.
Рассмотрим попытку
$_SERVER['REQUEST_URI'']
Или читайте здесь.