Translit — автоматическая транслитерация псевдонимов в MODX

Translit Дополнения

Дополнение Translit предназначено для автоматического преобразования русских (и других кириллических) заголовков страниц в латиницу при генерации псевдонимов (alias). Оно заменяет русские буквы на их латинские аналоги согласно таблице транслитерации, создавая человекопонятные и SEO-дружественные URL адреса. В MODX 3 дополнение также транслитерирует имена загружаемых файлов автоматически, что решает проблемы с кириллическими именами файлов на веб-серверах.

Без транслитерации русские заголовки страниц превращаются в псевдонимы с процентным кодированием (например %D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D1%8B), что выглядит некрасиво, сложно для восприятия и может создавать проблемы с некоторыми серверами и браузерами.

Установка и базовая настройка

Шаг 1. Установка пакета Translit

Установите дополнение через менеджер пакетов:

  1. Откройте Пакеты → Установщик
  2. Нажмите Загрузить пакеты
  3. Найдите translit в списке
  4. Нажмите Установить

После установки пакет не требует дополнительной конфигурации и готов к работе.

Шаг 2. Настройка системных параметров

См. инструкцию по настройке ЧПУ для русскоязычных сайтов.

Шаг 3. Проверка работы

Создайте новый ресурс с русским заголовком, например Контакты.

При сохранении поле Псевдоним автоматически заполнится значением kontakty.

Теперь страница будет доступна по адресу: https://ваш-сайт.ru/kontakty.

Транслитерация файлов

В MODX Revolution 3 транслитерация файлов работает автоматически после установки translit.

Убедитесь что включена системная настройка:

Транслитерация имен загружаемых файлов (upload_translit) — Да

Эта настройка автоматически транслитерирует имена файлов при загрузке через медиаменеджер или компоненты.

Настройка правил транслитерации

Редактирование таблицы транслитерации

Если стандартная транслитерация вас не устраивает, можно изменить правила.

Откройте файл таблицы транслитерации:

core/components/translit/model/modx/translit/tables/russian.php

Пример содержимого файла:

<?php
return array(
    'А' => 'A',   'Б' => 'B',   'В' => 'V',
    'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
    'Ё' => 'Yo',  'Ж' => 'Zh',  'З' => 'Z',
    'И' => 'I',   'Й' => 'Y',   'К' => 'K',
    'Л' => 'L',   'М' => 'M',   'Н' => 'N',
    'О' => 'O',   'П' => 'P',   'Р' => 'R',
    'С' => 'S',   'Т' => 'T',   'У' => 'U',
    'Ф' => 'F',   'Х' => 'Kh',  'Ц' => 'Ts',
    'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Shch',
    'Ъ' => '',    'Ы' => 'Y',   'Ь' => '',
    'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
    
    'а' => 'a',   'б' => 'b',   'в' => 'v',
    'г' => 'g',   'д' => 'd',   'е' => 'e',
    'ё' => 'yo',  'ж' => 'zh',  'з' => 'z',
    'и' => 'i',   'й' => 'y',   'к' => 'k',
    'л' => 'l',   'м' => 'm',   'н' => 'n',
    'о' => 'o',   'п' => 'p',   'р' => 'r',
    'с' => 's',   'т' => 't',   'у' => 'u',
    'ф' => 'f',   'х' => 'kh',  'ц' => 'ts',
    'ч' => 'ch',  'ш' => 'sh',  'щ' => 'shch',
    'ъ' => '',    'ы' => 'y',   'ь' => '',
    'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
);

Популярные изменения для Яндекс

Для лучшей индексации в Яндексе рекомендуется изменить некоторые правила:

<?php
return array(
    // ... другие буквы
    'Ж' => 'J',   // вместо Zh
    'Х' => 'H',   // вместо Kh
    'Ц' => 'C',   // вместо Ts
    'Ч' => 'Ch',
    'Ш' => 'Sh',
    'Щ' => 'Sch', // вместо Shch
    'Ю' => 'Ju',  // вместо Yu
    'Я' => 'Ja',  // вместо Ya
    
    'ж' => 'j',   // вместо zh
    'х' => 'h',   // вместо kh
    'ц' => 'c',   // вместо ts
    'ч' => 'ch',
    'ш' => 'sh',
    'щ' => 'sch', // вместо shch
    'ю' => 'ju',  // вместо yu
    'я' => 'ja',  // вместо ya
);

После изменения файла очистите кеш MODX.

Создание собственной таблицы

Вы можете создать свою таблицу транслитерации:

  1. Скопируйте файл russian.php в custom.php в той же папке
  2. Отредактируйте правила в custom.php
  3. В системных настройках измените friendly_alias_translit на custom

Использование транслитерации в коде

Вызов из сниппета

Если нужно транслитерировать строку программно:

<?php
$modx->getService('translit', 'modTransliterate');
$transliterated = $modx->translit->translate('Привет мир');
// Результат: privet-mir

С указанием таблицы транслитерации:

<?php
$text = 'Заголовок статьи';
$alias = $modx->translit->translate($text, 'russian');

Очистка псевдонима

Для создания корректного псевдонима с удалением спецсимволов:

<?php
$modx->getService('translit', 'modTransliterate');
$clean_alias = $modx->translit->sanitize('Текст (со скобками) / слэшами!', 'russian');
// Результат: tekst-so-skobkami-sleshami

PHP функция transliterator_transliterate

Альтернативный способ через встроенную PHP функцию:

<?php
$text = 'Привет мир';
$result = transliterator_transliterate('Any-Latin; Latin-ASCII', $text);
// Результат: Privet mir

Этот метод не требует установки дополнений и использует стандарты ICU.

Распространенные проблемы

Транслитерация не работает

Проверьте настройки:

  1. Установлен ли пакет translit
  2. automatic_alias = Да
  3. friendly_alias_translit = russian
  4. friendly_alias_translit_class = translit.modTransliterate
  5. Очищен ли кеш

Псевдоним не генерируется автоматически

Убедитесь что:

  • Поле псевдонима пустое при сохранении
  • Параметр automatic_alias включен
  • У вас есть права на редактирование ресурса

Файлы не транслитерируются

Для MODX 3 проверьте upload_translit.

Для MODX 2 установите filetranslit или создайте плагин.

Кракозябры в именах файлов

Возможные причины:

  • Неправильная кодировка сервера
  • Отсутствует транслитерация файлов
  • Проблемы с локалью PHP

Решение — установить транслитерацию файлов и проверить кодировку.

Настройка разделителя слов

По умолчанию слова разделяются дефисом -.

Изменить разделитель можно через системную настройку:

Разделитель слов в автоматическом псевдониме (friendly_alias_word_delimiter) — -

Возможные варианты:

  • - (дефис) — рекомендуется
  • _ (подчеркивание)
  • пустое значение (без разделителя)

Примеры транслитерации

Типичные преобразования:

Заголовок Псевдоним
Контакты kontakty
О компании o-kompanii
Услуги и цены uslugi-i-ceny
Новости 2026 novosti-2026
Статья №5 statya-5

Лучшие практики

  1. Всегда используйте транслитерацию для русскоязычных сайтов.
  2. Не меняйте таблицу без необходимости — стандартная работает хорошо.
  3. Используйте дефис как разделитель — это стандарт для URL.
  4. Транслитерируйте файлы для предотвращения проблем на серверах.
  5. Проверяйте псевдонимы перед публикацией важных страниц.

SEO рекомендации

Транслитерированные URL лучше для SEO чем процентное кодирование:

✅ Хорошо: https://site.ru/kontakty

❌ Плохо: https://site.ru/%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D1%8B

Преимущества транслитерации:

  • URL понятны пользователям;
  • Легко копируются и вставляются;
  • Лучше индексируются поисковиками;
  • Не вызывают проблем с кодировкой;
  • Выглядят профессионально.
Оцените статью
MODX 3
Добавить комментарий

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