MODx ЧПУ в utf-8. Делаем ЧПУ еще более понятным

3 Сен
2009

Долгое время меня терзало отсутствие поддержки UTF-8 в ссылках MODx. Это довольно напрягало, так как в у себя в блоге(wordpress) все ссылочки на русском и я привык к приятной индексации поисковиков)) MODx хоть и приколен но с UTF-8 еще есть траблы.
Вообщем седня уделил немножко времени и сделал таки русские буковки в ссылках))

Итак по порядку.
В папочке /manager/processors есть файлик save_content.processor.php он отвечает за сохранение наших страничек, где собсно и коверкается наш ЧПУ. Вообщем лезим в него.

Первое что делаем это добавляем следующий код(он будет чистить наш ЧПУ после ввода):

setlocale(LC_ALL, "ru_RU.UTF-8");
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');

function StripAliasMod($data) {
$data=trim($data);
$data=eregi_replace("[][,.?&\"#\{\(\_\\\@)\=\+\,\?\.;\/:\!%\*\(\)|}\]+", "", $data);
$data=eregi_replace("[[:space:][:blank:]]+", "-", $data);
$data=mb_strtolower($data);
return $data;
}

Далее находим следующие строчки strtolower($modx->stripAlias(trim($pagetitle))) и $modx->stripAlias($alias)

И меняем их на StripAliasMod($pagetitle) и StripAliasMod($alias) соответственно.

ЗЫ: Не забудьте оставить бекап файлика. Скрипт рабочий, но все же всегда нужно перестраховываться.

Update! Как выяснилось в некоторых системах нужно добавить код приведенный ниже в файл manager/includes/document.parser.class.inc.php (Вставлять с самого начала страницы)

setlocale(LC_ALL, “ru_RU.UTF-8″);
mb_internal_encoding(’UTF-8′);
mb_regex_encoding(’UTF-8′);

//setlocale(LC_ALL, “ru_RU.UTF-8″);
mb_internal_encoding(’UTF-8′);
mb_regex_encoding(’UTF-8′);

Комментарии:

  1. Андрей Никишаев    Сентябрь 12th, 2009 | 21:11   #   

    Не совсем вас понял.. Что значит куда?

Оставить комментарий

Вы должны войти, что бы оставить комментарий.

Наверх