Функция которая позволит определить текущий URL страницы в phpBB, может добавить параметры к URL или вырезать их. Очень полезная в некоторых случаях, например создать закладку или ссылку на текущую страницу с мобильной версией.
Код: Выделить всё
function request_url($get_path = false, $clear = false)
{
global $config, $user;
$server_name = $user->host;
$server_port = (!empty($_SERVER['SERVER_PORT'])) ? (int) $_SERVER['SERVER_PORT'] : (int) getenv('SERVER_PORT');
// Forcing server vars is the only way to specify/override the protocol
if ($config['force_server_vars'] || !$server_name)
{
$server_protocol = ($config['server_protocol']) ? $config['server_protocol'] : (($config['cookie_secure']) ? 'https://' : 'http://');
$server_name = $config['server_name'];
$server_port = (int) $config['server_port'];
$url = $server_protocol . $server_name;
$cookie_secure = $config['cookie_secure'];
}
else
{
// Do not rely on cookie_secure, users seem to think that it means a secured cookie instead of an encrypted connection
$cookie_secure = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 1 : 0;
$url = (($cookie_secure) ? 'https://' : 'http://') . $server_name;
}
if ($server_port && (($cookie_secure && $server_port <> 443) || (!$cookie_secure && $server_port <> 80)))
{
// HTTP HOST can carry a port number (we fetch $user->host, but for old versions this may be true)
if (strpos($server_name, ':') === false)
{
$url .= ':' . $server_port;
}
}
// Strip / from the end
//if (substr($url, -1, 1) == '/')
//{
// $url = substr($url, 0, -1);
//}
if (isset($_SERVER['REQUEST_URI']))
{
$url .= $_SERVER['REQUEST_URI'];
}
else if (isset($_SERVER['argv']))
{
$url .= $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['argv'][0];
}
else if (isset($_SERVER['QUERY_STRING']))
{
$url .= $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['QUERY_STRING'];
}
else
{
$url .= $_SERVER['SCRIPT_NAME'];
}
if ($get_path)
{
$url_delim = (strpos($url, '?') === false) ? '?' : ((strpos($url, '?') === strlen($url) - 1) ? '' : '&');
if($clear)
{
$url_delim = array($url_delim . $get_path, '&' . $get_path, '?' . $get_path, $get_path);
$url = str_replace($url_delim, "", $url);
}
else
{
$url .= $url_delim . $get_path;
}
}
return $url;
}
Можно добавить её в includes/functions.php в самый низ перед ?>
Затем в шаблонах можно использовать так:
Найти:
$template->assign_vars(array(
Добавить после:
'REQUEST_URL' => request_url(),
Применение:
echo request_url();
- Текущая страница.
echo request_url('versiya=priner');
- Добавит параметр &versiya=printer или ?versiya=printer (в зависимости как это требуется)
echo request_url('versiya=priner', true);
- Удалит параметры (&versiya=printer, &versiya=printer или ?versiya=printer)