Drupal → Функции для получения текущего адреса

01.11.2011

Табличка с результатами функций при открытой странице http://example.com/drupal/documentation?page=1, где drupal — это папка в которой располагается Drupal, а documentation — синоним к адресу node/123:

$GLOBALS['base_root'] http://example.com
$GLOBALS['base_url'] http://example.com/drupal
$GLOBALS['base_path'] или base_path() /drupal/
request_uri() /drupal/documentation?page=1
request_path() documentation
current_path() или $_GET['q'] node/123
arg(0), arg(1) node, 123

Замечания:

  • значение в $GLOBALS['base_url'] никогда не содержит завершающий слэш, в отличии от $GLOBALS['base_path'] и base_path().
  • current_path() не работает в hook_boot().

Оригинал заметки — URI, path, aliases, oh my!.

Написанное актуально для
Drupal 7
Похожие записи

Комментарии

Думаю, что стоит добавить arg(), без аргументов

$_GET['q'] меняет значение в процессе бутстрапа, не рекомендуется его использовать

К словам андеда ещё могу добавить вот такие строки, найденные в модуле приватных сообщений:

  // If this is an AJAX request, update $_GET['q'] so that table sorting and
  // similar links are using the correct base path.
  if ($_GET['q'] == 'system/ajax') {
    $q = 'messages';
    if (!empty($argument)) {
      $q .= '/' . $argument;
    }
    $_GET['q'] = $q;
  }

drupal_get_query_parameters() для получения GET параметров запроса. Для указаного примера, чтобы получить page=1

Роман
04.11.2016, 15:38

Добрый день.

Скажите, а для версии 8 не планируете написать аналогичную статью ?

Евгений
09.11.2016, 16:33

Скажите, а для версии 8 не планируете написать аналогичную статью ?

Используйте \Drupal::service('current_route_match')->getRouteName();

А якорь как получить? Добавить бы неплохо про него - забыли может?

Гость
30.07.2020, 13:02

А как кроме $_GET['q'] получить аргументы для urlencode строк?

Добавить комментарий