В этой заметке рассмотрено то, как путем небольшой правки исходного кода 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 без применения сторонних плагинов и абсолютно бесплатно.
Спасибо. Как на более поздних версиях? Работает?
Не пробовал, думаю да. Просто код внимательно правьте. Чтоб если что не так, можно было все вернуть назад.