Эта статья для тех у кого на сайте в адресе страницы
- ЧПУ на кириллических символах
- кто собирается устанавливать ЧПУ на кириллических символах
- у кого в темах метки на кириллице
URL, это общепринятая аббревиатура указателя на адрес ресурса в интернете (англ. Uniform Resource Locator, URL). В
URL используются ограниченный набор
ASCII‐символов.
Например, в интернет адресе вы не встретите символ пробела, а в самом
ASCII присутствуют только латинские буквы, которые сохраняются в памяти машины, как есть, в виде символов. Если использовать в
URL символы кириллицы, то в память машины они записываются в виде кода на
UTF-8.
Quote:
Originally Posted by Catlord Meow
|
В приведённом выше примере
URL содержал кириллические символы
HTML Code:
http://sovserv.su/threads/198-Обсуждение-изменений
поэтому отображался в адресной строке браузера в таком виде
HTML Code:
http://sovserv.su /threads/198-%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9
У многих современных браузеров аналогично работает буфер обмена при копировании
URL из адресной строки. Отдельные браузеры могут копировать в свой буфер адрес на кириллице, но делают это кто, как хочет;
- через плагин (Хром),
- опции в настройках (Лиса)
- по умолчанию (браузер от Яндекса).
Из адресной строки браузера
URL в кириллических символах можно скопировать как есть, не закодированным в
UTF-8, если копировать адрес без http: [https:].
Таким образом, проблема копирования
URL с кириллическими символами решаема, однако, у всех приведённых выше вариантов есть один общий недостаток, их необходимо знать. Если пользователей сайта теоретически можно научить таким способам копирования
URL, то для гостей сайта это не приемлемо.
Далее о том, как помочь пользователям и гостям сайта скопировать короткий адрес странички, состоящий из кириллических символов (без кода
UTF-8).
Вначале декодируем
UTF-8 из адреса страницы в кириллические символы.
Адрес странички в переменных будет выглядеть так
HTML Code:
https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]
где,
- $_SERVER[HTTP_HOST] – доменное имя сайта,
- $_SERVER[REQUEST_URI] – url странички сайта
Создадим модуль
Положим, что кириллические символы находятся только в переменной
$_SERVER[REQUEST_URI]
Место положение модуля:
global_start
Порядок выполнения:
5
Код PHP модуля:
PHP Code:
eval('$shortlink_url = "' . 'https://' . $_SERVER['HTTP_HOST'] . rawurldecode($_SERVER['REQUEST_URI']) . '";');
Модуль включен:
Да
Таким образом получен адрес странички сайта состоящий только из символов и он находится в переменной
$shortlink_url
Далее, разместим на странице переменную
$shortlink_url, например, вначале страницы. Для этого открываем шаблон
header и копируем переменную
$shortlink_url в начало шаблона. Но предварительно поместим
$shortlink_url в блок с бордером и белым фоном.
HTML Code:
<div style="font-size:10pt;color:#000080;padding:3px 8px;background-color:#FFF;border:1px solid #000080;">$shortlink_url</div>
Придадим блоку с коротким адресом юзабельности, добавив кнопку для копирования
URL. Отмечу, что полное автоматическое копирование возможно только в браузере
IE остальные браузеры не умеют этого делать.
HTML Code:
<if condition="is_browser('ie')">
<script type='text/javascript'>
function copy_clip(whattext)
{
if (window.clipboardData)
{
window.clipboardData.setData("Text", whattext);
}
alert("Адрес страницы сохранён в буфере обмена :\n\n" + whattext);
return false;}
</script>
</if>
<div style="font-size:10pt;color:#000080;padding:3px 8px;background-color:#FFF;border:1px solid #000080;overflow:hidden;">
<a href="#" style="float:right;font-weight:bold;font-style:italic;cursor:pointer;"
<if condition="is_browser('ie')">
onClick="copy_clip('$shortlink_url')"
<else />
onClick="prompt('скопируйте адрес','$shortlink_url')"</if> title="Копировать URL">URL</a>
$shortlink_url
</div>
Сохраняем шаблон
header.