Разрешить русские буквы в адресной строке для Джумла 3.6.5

code_edit_for_URL_cyrillyc_symbolВ этой заметке рассмотрено то, как путем небольшой правки исходного кода Joomla 3.6.5 добиться возможности использовать кириллические URL (УРЛ – то есть путь к отображаемой странице, который находится вверху браузера после названия домена вашего сайта). Информация будет полезна начинающим веб-мастерам, так как не требует глубоких знаний php и кода этой системы управления сайтом.

Предыстория вопроса такова. Есть сайт на Вородпресс, который было решено перенести на Джумлу. Сложность оказалась в том, чтобы на новом движке на все материалы сделать УРЛ аналогичные старому сайту – кириллическими символами, чтобы избежать необходимости 301 редиректа. По умолчанию в админке CMS такие попытки оканчиваются неудачей – система делает транслитерацию латиницей. В Сети многие предлагают для этого использовать сторонний плагин. Но это довольно громоздко и не стоит тех денег, которые за него просят. Поэтому вопрос был решен небольшой правкой, которую нужно внести в исходный код.

Правка движка Joomla 3.6.5 для разрешения кириллических URL c русскими буквами

Для получения нужного результата правим файл

libraries/joomla/filter/output.php

В нем вместо части кода функции stringURLSafe (этот кусок мы не будем удалять, а просто закомментируем) нужно добавить:

$str = preg_replace(array('/\s+/','/[^A-Za-zА-Яа-яЁё0-9\-]/u'), array('-',''), $str);

Таким образом, функция stringURLSafe должна принять вид:

public static function stringURLSafe($string, $language = '')
	{
		// Удаление всех '-' 
		$str = str_replace('-', ' ', $string);

		// Транслит вхождения
		//$lang = $language == '' || $language == '*' ? JFactory::getLanguage() : JLanguage::getInstance($language);
		//$str = $lang->transliterate($str);

		// Удаление пробелов в начале и в конце алиаса 
		//$str = trim(JString::strtolower($str));

		// Проверка строки
		//$str = preg_replace('/(\s|[^A-Za-z0-9\-])+/', '-', $str);
		
		//===== вставка для кирилицы в УРЛ вместо ЧЕТЫРЕХ предыдущих строк, которые теперь закомментированы =====
		$str = preg_replace(array('/\s+/','/[^A-Za-zА-Яа-яЁё0-9\-]/u'), array('-',''), $str);
		// =============================================================================================
		// Удаление '-'
		$str = trim($str, '-');

		return $str;
	}

После этого при создании нового материала, в поле Alias можно вписать кириллические символы для будущего URLстраницы. При добавлении такого материала в меню, он будет отображаться по адресу, в котором будут присутствовать русские буквы. Таким образом, можно воспользоваться возможностью дополнительно оптимизировать страницу, включив в URL кириллический ключ для продвижения статьи.

Не нужно забывать и о психологическом факторе. Допустим, русскоязычному пользователю представлено в выдаче поисковика два рядом стоящих результата. URLодного из них транслитерирован, а второй – написан кириллицей. С большей вероятностью будет выбран второй вариант. Таким образом, вы получаете дополнительные баллы от поисковика при ранжировании. Хотя мнений по этому поводу есть множество. Но это тема другого разговора. А пока можете пользоваться кириллическими УРЛами для Joomla без применения сторонних плагинов и абсолютно бесплатно.

2 Replies to “Разрешить русские буквы в адресной строке для Джумла 3.6.5”

    • Не пробовал, думаю да. Просто код внимательно правьте. Чтоб если что не так, можно было все вернуть назад.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.