Контексты + Babel: Многоязычность MODX
23.05.2023
23.05.2023
В данной статье мы разберем как настроить мультиязычность на CMS MODX Revo. Для этого рассмотрим типичный пример с двумя языковыми версиями сайта (языков может быть больше). Процесс настройки не является сложным. Просто следуйте инструкции и все будет ?
Наша задача получить ссылки такого типа:
- https://web-site.com.ua/ — украинский
- https://web-site.com.ua/en/ — английский
Для реализации многоязычности нам понадобиться следующие компоненты:
После скачивания CMS MODX Вы обнаружите в корневой папке файл ht.access, переименуем его в .htaccess
Далее отредактируем его содержимое:
Заменить или закомментировать (в начале строки #)
# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
На
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(uk|en)/favicon.ico$ favicon.ico [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(uk|en)/assets(.*)$ assets$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(uk|en)?/?(.*)$ index.php?cultureKey=$1&q=$2 [L,QSA]
Где (uk|en) должны совпадать с параметром cultureKey (подробнее ниже)
Для начала создадим новый контекст в административной части, для этого перейдем Система → Контексты → Создать новый
В поле "Ключ" вводим, например, для английского - "en".
ВАЖНО! Эти ключи в дальнейшем будут использованные в плагине переключения контекстов.
Далее правый клик мыши по новому контексту и выбираем "Редактировать". Переходим по табу "Настройки контекста" и нажимаем "Создать новый".
Для каждой языковой версии нам нужны следующие настройки
Существующий контекст (ключ "web"): | Новый контекст (ключ "en"): |
Base URL
|
Base URL
|
Culture key
|
Culture key
|
Site start
|
Site start
|
Site name
|
Site name
|
Site URL
|
Site URL
|
Error page
|
Error page
|
Locale
|
Locale
|
Для контекста «web» все настройки уже есть в «Системных настройках», но мы их меняем в «Настройках контекста».
Для того чтобы на нашем сайте работала мультиязычность нам нужен плагин для связки языковых версий с контекстами.
В админке переходим по табу "Элементы" и нажимаем на иконку "Новый плагин".
В поле имя пишем GateWay и помещаем следующий код:
Далее переходим по вкладке "Системные события", включаем OnHandleRequest и сохраняем.
Устанавливаем пакет Babel, в панели управления переходим по "Пакеты" -> "Установщик" и нажимаем "Загрузить дополнения" и находим там Babel, загружаем и устанавливаем пакет.
Здесь уже должны быть контексты которые мы создали (по примеру это: web, en; если поле пустое, то можно вписать ключи контекстов руками), другие настройки оставляем без изменений.
В панели управления сайта, во вкладке "Ресурсы", мы видим контексты которые создали ранее. Как раз в них мы будем создавать страницы для разных языковых версий.
Как нам связать существующие или создать новые ресурсы для разных языков?
Для этих целей как раз и был установлен плагин Babel. При сохранении ресурса в правом верхнем углу возле кнопки «Сохранить» появится меню отвечающее за языковые версии сайта ("Создать перевод", "Связать перевод"). Используя это меню как раз и происходит связь ресурсов в разных контекстах (языковых версиях).
Полученные id ресурсов и используем в настройках контекстов для страниц Главная и 404 (см. таблицу с настройками выше).
Переключение языков на сайте.
Теперь завершающий этап. Нам нужно разместить кнопки переключения на самом сайте. Для этого разместим в коде сайта (чанке, шаблоне) следующее:
Fenom:
<ul>
{'BabelLinks' | snippet:[
'showCurrent' => 1,
]}
</ul>
MODX:
<ul>
[[BabelLinks?
&showCurrent=`1`
]]
</ul>
Все нужные для работы и стилизации параметры BabelLinks можно посмотреть тут
https://docs.modx.com/extras/revo/babel/babel.babellinks.
Смотрите так же