url
includes/common.inc, строка 1269
- Версии
- 5
url($path = NULL,
$query= NULL,$fragment= NULL,$absolute= FALSE)- 6
url($path = NULL, $options = array())
Генерирует URL из указанного пути меню. Также поддерживает уже существующие URL.
Для создания ссылок в модулях лучше вместо url()
использовать функцию l()
.
Параметры
$path
Путь меню, на который будет указывать URL, например 'admin/content/node'
, или уже существующий URL, например 'http://drupal.org/'
.
$query
Строка запроса, присоединяемая к адресу.
$fragment
Идентификатор фрагмента (или именованный якорь), присоединяемый к адресу. Если в качестве исходника используется готовый URL с идентификатором фрагмента, этот идентификатор будет заменен на заданный. Не добавляйте символ '#'
.
$absolute
Определяет, будет ли полученый URL абсолютным (т.е. начанаться с 'http:'
). Это полезно для ссылок, которые будут показываться в материалах вне сайта, например, при генерации ленты RSS.
Возвращаемое значение
Строка, содержащая URL для заданного пути.
Связанные темы
Код
<?php
function url($path = NULL, $query = NULL, $fragment = NULL, $absolute = FALSE) {
if (isset($fragment)) {
$fragment = '#'. $fragment;
}
// Return an external link if $path contains an allowed absolute URL.
// Only call the slow filter_xss_bad_protocol if $path contains a ':' before any / ? or #.
$colonpos = strpos($path, ':');
if ($colonpos !== FALSE && !preg_match('![/?#]!', substr($path, 0, $colonpos)) && filter_xss_bad_protocol($path, FALSE) == check_plain($path)) {
// Split off the fragment
if (strpos($path, '#') !== FALSE) {
list($path, $old_fragment) = explode('#', $path, 2);
if (isset($old_fragment) && !isset($fragment)) {
$fragment = '#'. $old_fragment;
}
}
// Append the query
if (isset($query)) {
$path .= (strpos($path, '?') !== FALSE ? '&' : '?') . $query;
}
// Reassemble
return $path . $fragment;
}
global $base_url;
static $script;
static $clean_url;
if (!isset($script)) {
// On some web servers, such as IIS, we can't omit "index.php". So, we
// generate "index.php?q=foo" instead of "?q=foo" on anything that is not
// Apache.
$script = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') === FALSE) ? 'index.php' : '';
}
// Cache the clean_url variable to improve performance.
if (!isset($clean_url)) {
$clean_url = (bool)variable_get('clean_url', '0');
}
$base = ($absolute ? $base_url . '/' : base_path());
// The special path '<front>' links to the default front page.
if (!empty($path) && $path != '<front>') {
$path = drupal_get_path_alias($path);
$path = drupal_urlencode($path);
if (!$clean_url) {
if (isset($query)) {
return $base . $script .'?q='. $path .'&'. $query . $fragment;
}
else {
return $base . $script .'?q='. $path . $fragment;
}
}
else {
if (isset($query)) {
return $base . $path .'?'. $query . $fragment;
}
else {
return $base . $path . $fragment;
}
}
}
else {
if (isset($query)) {
return $base . $script .'?'. $query . $fragment;
}
else {
return $base . $fragment;
}
}
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии