Мне нужно захватить URL-адрес текущей страницы на сайте Drupal. Неважно, какой тип контента он есть, может быть любым типом узла.
Я НЕ ищу путь к теме, или базовый url, или get_destination от Drupal. Я ищу функцию или переменную, которая даст мне следующее:
http://example.com/node/number
Либо с или без (более вероятно) http://
.
drupal_get_destination () имеет некоторый внутренний код, который указывает на правильное место для получения текущего внутреннего пути. Чтобы перевести этот путь в абсолютный URL, функция url () должна сделать трюк. Если «абсолютная» опция передана в нее, она будет генерировать полный URL, а не только внутренний путь. Он также будет заменять любые псевдонимы пути для текущего пути.
$path = isset($_GET['q']) ? $_GET['q'] : '<front>'; $link = url($path, array('absolute' => TRUE));
Это то, что я нашел полезным
global $base_root; $base_root . request_uri();
Возвращает строки запроса, и это то, что используется в ядре: page_set_cache ()
Вы также можете сделать это следующим образом:
$current_url = 'http://' .$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
Это немного быстрее.
Попробуйте следующее:
url($_GET['q'], array('absolute' => true));
Этот метод – старый метод, в drupal 7 мы можем получить его очень просто
current_path()
и другая функция с крошечной разницей
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();
Возможно, что вы хотите, это просто старые предопределенные переменные.
Попробуйте попробовать
$_SERVER['REQUEST_URI'']
Или читайте больше здесь .