Долгое время меня терзало отсутствие поддержки 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′);
Андрей Никишаев Сентябрь 12th, 2009 | 21:11 #
Не совсем вас понял.. Что значит куда?