Контексти + 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"): |
|
Базовий URL
|
Базовий URL
|
|
Культурний ключ
|
Культурний ключ
|
|
Початок сайту
|
Початок сайту
|
|
Назва сайту
|
Назва сайту
|
|
URL сайту
|
URL сайту
|
|
Сторінка помилки
|
Сторінка помилки
|
|
Місцевий
|
Місцевий
|
Для контексту «web» усі налаштування вже є у «Системних налаштуваннях», але ми їх змінюємо у «Налаштуваннях контексту».
Для того, щоб на нашому сайті працювала мультимовність, нам потрібен плагін для зв'язування мовних версій з контекстами.
В адмінці переходимо по табу "Елементи" та натискаємо на іконку "Новий плагін".
У полі ім'я пишемо GateWay та поміщаємо наступний код:
Далі переходимо по вкладці "Системні події", включаємо OnHandleRequest та зберігаємо.
Встановлюємо пакет Babel, в панелі керування переходимо по "Пакети" -> "Установник" і натискаємо "Завантажити доповнення" і знаходимо там Babel, завантажуємо та встановлюємо пакет.
Тут вже повинні бути контексти, які ми створили (за прикладом це: web, en; якщо поле порожнє, то можна вписати ключі контекстів руками) , інші налаштування залишаємо без змін.
На панелі управління сайту, у вкладці "Ресурси", ми бачимо контексти, які створили раніше. Саме в них ми створюватимемо сторінки для різних мовних версій.
Як нам зв'язати існуючі або створити нові ресурси для різних мов?
Для цих цілей якраз і було встановлено плагін Babel. При збереженні ресурсу у правому верхньому кутку біля кнопки «Зберегти» з'явиться меню, що відповідає за мовні версії сайту ("Створити переклад", "Зв'язати переклад"). Використовуючи це меню саме відбувається зв'язок ресурсів у різних контекстах (мовних версіях).
Отримані id ресурсів та використовуємо в налаштуваннях контекстів для сторінок Головна та 404 (див. таблицю з налаштуваннями вище).
Перемикання мов на сайті.
Тепер завершальний етап. Нам потрібно розмістити кнопки перемикання на сайті. Для цього розмістимо в коді сайту (чанці, шаблоні) наступне:
Fenom:
<ul> {'BabelLinks' | snippet:[ 'showCurrent' => 1, ]} </ul>
MODX:
<ul> [[BabelLinks? &showCurrent=`1` ]] </ul>
Усі необхідні для роботи та стилізації параметри BabelLinks можна переглянути тут
Дивіться також