Сегодня же мы продолжим настраивать MODX, а если конкретнее, то настроим ЧПУ MODX — человека понятные (дружественные) URL адреса (иными словами сделаем читаемыми URL адреса (пример: Заголовок страницы «О компании», сейчас выглядит так: /index.php?id=7, а станет выглядеть так /o-kompanii.html или /about).
Настройка ЧПУ MODX
Настройка состоит из нескольких шагов.
Настройка базового URL
Кто идет по моим урокам с нуля — вам данный шаг делать пока что не нужно — сделаем во время натяжки шаблона.
Проверьте стоит ли у вас в шаблонах (или чанке) в секции head параметр <base href="">
:
<head>
<base href="[[!++site_url]]">
...
</head>
На Fenom вызов выглядит так:
<head>
<base href="{'site_url' | config}" />
...
</head>
Если его нет пропишите — без него будут проблемы с дублированием URL относительно текущей страницы при переходе на другую страницу.
Переименовываем файл ht.access
В корневой папке сайта лежит файл ht.access переименуйте его в .htaccess. Сделать это можно по FTP или через файловый менеджер хостинга: если вы это еще не сделали и не знаете как это сделать, это описано в одной из в следующих уроков: Настройка .htaccess для MODX.
Установка пакета для транслитерации
На данный момент мне известно 4 пакета (дополнения), один самый часто устанавливаемый из основного репозитория: translit — мне не нравится качество его транслитерации (оставляет точки, запитые, круглые скобки) — но он совместим с MODX 3.
И 3 дополнения из репозитория modstore:
Translitor — улучшенная версия translit — качество транслитерации лучше и вырезает точки с запятыми (не корректно работает с MODX 3).
yTranslit — генерирует дружественных url через api переводчика Яндекс. Уже не актуален, т.к. с 2021 бесплатного api у яндекса больше нет.
gTranslit — тоже самое, что yTranslit, только работает с помощью GoogleTranslateForFree (не проверял работу с MODX 3).
Пример транслитерации 3 мя компонентами фразы: «Тарифы, цены.»
Translit: «tarify,-ceny.»
Translitor: tarify-ceny
gTranslit: rates-prices
Какое дополнение выбрать?
Под поисковую систему яндекс больше заходит Translitor, а вот под Google лучше заходит gTranslit. Если выбирать меньшее из зол, то наверное лучше использовать в России Translitor — устанавливаете его из репозитория Modxstore.
Системные настройки MODX — Дружественные URL
Идем в «Системные настройки«, на открывшейся странице в фильтре выбираем «Дружественные URL«. Далее находим следующие пункты и выставляем соответствующие значения:
Перепроверьте на всякий случай! Описания настроек можете почитать нажав на против них на знак +.
- Автоматически генерировать псевдоним — automatic_alias: Да
- Суффикс контейнера — container_suffix: /
- Только строчные символы в псевдонимах — friendly_alias_lowercase_only: Да
- Шаблон для фильтрации символов в псевдонимах — friendly_alias_restrict_chars_pattern: /[\0\x0B\t\n\r\f\a&=+%#<>»~:`@\?\[\]\{\}\|\^’\\]/
- Вырезать теги элементов из псевдонима — friendly_alias_strip_element_tags: Да
- Символы, вырезаемые из псевдонима — friendly_alias_trim_chars: /.-_
- Разделитель слов в псевдонимах — friendly_alias_word_delimiter: —
- Разделители слов в псевдонимах — friendly_alias_word_delimiters: -_
- Проверять на дублирование URI во всех контекстах — global_duplicate_uri_check: Нет
Теперь пробежимся по настройкам которые пришлось изменить!
Вот эти три значение выставляет translitor при его установке:
- Транслитерация псевдонимов — friendly_alias_translit: russian
- Класс, управляющий транслитерацией псевдонимов — friendly_alias_translit_class: translitor
- Путь к классу, осуществляющему транслитерацию псевдонимов — friendly_alias_translit_class_path: {core_path}components/translitor/model/
- friendly_alias_translit_class = modx.gtranslit.modTransliterate
- friendly_alias_translit_class_path = «{core_path}components/gtranslit/model/»
- friendly_alias_translit = ru
А вот эти мы получается меняем в ручную:
- Максимальная длина псевдонима — friendly_alias_max_length — 70 (большее 70 символов получается слишком длинный адрес страницы).
- Создавать ЧПУ-псевдоним (так называемые «дружественные URL») «на лету» — friendly_alias_realtime — Да (генерирует псевдоним в реальном времени).
- Метод фильтрации символов в псевдонимах — friendly_alias_restrict_chars — alphanumeric (чтобы у псевдонима вырезалось все кроме букв и цифр)
- Использовать дружественные URL — friendly_urls — Да (включаем URL вида /o-nas.html или /about-us.html (транслитерация псевдонимов), а не параметрические, вроде /index.php?p=3 (для поддержки опции на некоторых хостингах нужны соответствующие настройки веб-сервера Apache в файле .htaccess или в конфиг-файле Nginx)
- Строгий режим дружественных URL — friendly_urls_strict — Да
Дальше в отличии от того какую вы хотите сделать структуру URL — вложенную (web-revenue.ru/modx-revo/nastroyka-chpu) или плоскую (web-revenue.ru/nastroyka-chpu)
Для вложенной структуры указываем.
Использовать вложенные URL — use_alias_path — Да
Чтобы в URL учитывался псевдоним родителя, а не его замороженный URL
Не работают дружественные url? Не забываем про требования к серверу:
На сервере (Apache) должна быть включена функция Mod_Rewrite.
А для плоской Использовать вложенные URL — Нет
Настройку Использовать «замороженные» URI родителя — use_frozen_parent_uris — любой (по желанию)
В принципе все! У нас сейчас ЧПУ вида /o-kompanii.html (или /about-us.html).

Системные настройки MODX — Шлюз
Переключаемся в фильтре на Шлюз и меняем настройку
Строгий метод запроса — request_method_strict — Да
Чтобы ссылки работали только в ЧПУ-виде через редирект и не открывались по ссылкам вида https://site.ru/index.php?id=7
В следующем уроке продолжим настройку постоянных ссылок, уберем в конце URL окончание .html.