Контексти + 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 можна переглянути тут
Дивіться також