Налаштування контекстів MODX для мультисайтовості
Вам потрібно запустити три сайти — російський, англійський та білоруський. Кожен зі своїм доменом, шаблонами та контентом. Зазвичай це означає три установки MODX: потрійні оновлення, бекапи, налаштування. Контексти MODX вирішують цю проблему: один двигун, різні сайти. Налаштування займає 2-3 дні замість тижня на три установки. Згідно з документацією MODX, контексти забезпечують повну ізоляцію без дублювання ядра. Наші інженери з 5-річним досвідом гарантують стабільну роботу мультисайтової структури. Понад 50 успішних проєктів на MODX. Середня економія на підтримці — 30%, на хостингу — до 40%.
Що таке контексти і для чого вони потрібні?
Контексти — це ізольовані середовища в межах однієї установки MODX. Кожен контекст має власні налаштування, кореневі ресурси, шаблони та навіть мовні параметри. Порівняйте з іншими підходами:
| Підхід | Складність підтримки | Продуктивність | Гнучкість контенту | Час на розгортання |
|---|---|---|---|---|
| Окремі установки MODX | Висока (три CMS) | Середня | Висока | 5-7 днів |
| Одна установка + контексти | Низька (одна CMS) | Висока | Висока | 2-3 дні |
| Одна установка + підпапки | Середня | Висока | Низька (спільний контент) | 1 день |
Налаштування контекстів у 3 рази швидше, ніж розгортання окремих установок. Економія на хостингу — до 40%, а витрати на підтримку скорочуються на 30% в середньому за нашими проєктами. Додатково ви отримуєте єдину точку входу для управління: оновлення MODX, плагіни та компоненти керуються централізовано.
Як налаштувати контексти: покрокове керівництво
Створення та параметри контексту
Система → Контексти → Створити → ключ en (тільки латиниця, короткий). Після створення налаштуйте параметри:
Ключ: en
Ім'я: English Version
Налаштування (Settings):
base_url: /en/
site_url: https://yourdomain.com/en/
site_start: 55 (ID кореневого ресурсу)
error_page: 56
default_template: 3
cultureKey: en
locale: en_US.UTF-8 Автоматичне перемикання за доменом
Плагін на подію OnHandleRequest перемикає контекст на основі HTTP_HOST або URI:
$host = $_SERVER['HTTP_HOST'];
$uri = $_SERVER['REQUEST_URI'];
$contextMap = [
'ru.company.com' => 'ru',
'en.company.com' => 'en',
'by.company.com' => 'by',
];
if (isset($contextMap[$host])) {
$contextKey = $contextMap[$host];
if ($modx->context->key !== $contextKey) {
$modx->switchContext($contextKey);
}
return;
}
$prefixMap = ['/ru/' => 'ru', '/en/' => 'en', '/uk/' => 'uk'];
foreach ($prefixMap as $prefix => $contextKey) {
if (strpos($uri, $prefix) === 0) {
if ($modx->context->key !== $contextKey) {
$modx->switchContext($contextKey);
}
return;
}
} Додаткові налаштування плагіна
Якщо вам потрібно також перемикати мовні налаштування, використовуйте `$modx->cultureKey` всередині плагіна. Для кешування карти контекстів можна застосувати `modRegistry`.Конфігурація Nginx для піддоменів
server {
listen 443 ssl http2;
server_name ru.company.com en.company.com by.company.com;
root /var/www/company.com;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_HOST $host;
include fastcgi_params;
}
} Ресурси та крос-контекстні посилання
Кожен ресурс прив'язується до контексту через поле context_key. Для створення ресурсу в контексті en використовуйте:
$resource = $modx->newObject('modDocument');
$resource->set('pagetitle', 'About Us');
$resource->set('alias', 'about-us');
$resource->set('context_key', 'en');
$resource->set('template', 3);
$resource->set('parent', 55);
$resource->save();
Для крос-контекстних посилань вкажіть контекст: [[~42? &context=en]].
Синхронізація налаштувань
Системні налаштування мають пріоритет: Global > Context > Namespace. Контекстні налаштування перевизначають глобальні. Приклад отримання URL для поточного контексту:
$siteUrl = $modx->getOption('site_url'); Чому контексти вигідніші за окремі установки?
- Економія ресурсів: одна база даних, одне ядро.
- Єдина адмінка: управління всіма сайтами з одного інтерфейсу.
- Швидке розгортання: новий контекст налаштовується за годину.
- Легкі оновлення: оновлюєте MODX один раз.
Переконайтеся самі: зв'яжіться з нами для консультації. Наші інженери з 5-річним досвідом допоможуть оцінити ваш проєкт. Отримайте точну оцінку та план впровадження.
Які типові помилки виникають при налаштуванні контекстів?
Навіть досвідчені розробники допускають кілька промахів. Найчастіша — неправильна прив'язка кореневого ресурсу site_start. Якщо ресурс не належить контексту, MODX не зможе відобразити сайт. Друга проблема — відсутність плагіна перемикання: без нього всі домени ведуть на один контекст. Третя — конфлікт кешу: контексти використовують спільний кеш MODX, тому налаштування можуть перезаписуватися. Рішення — розділяти кеш за контекстом, увімкнувши опцію cache_context. Четверта — забувають налаштувати cultureKey для мультимовності, через що локалізація не працює. П'ята — помилки в Nginx: неправильна директива server_name або відсутність HTTP_HOST у fastcgi_param.
| Типова помилка | Причина | Спосіб уникнути |
|---|---|---|
| 404 на головній | site_start не належить контексту | Перевірте прив'язку кореневого ресурсу |
| Однаковий контент на всіх доменах | Плагін перемикання не спрацьовує | Переконайтеся, що подія OnHandleRequest обробляється |
| Проблеми з локалізацією | cultureKey не заданий або невірний | Встановіть cultureKey для кожного контексту |
| Конфлікти кешу | Спільний кеш для всіх контекстів | Увімкніть cache_context у налаштуваннях |
Ці нюанси ми враховуємо при налаштуванні під ключ.
Чек-лист налаштування контекстів
- Створити контекст і задати параметри.
- Прив'язати кореневий ресурс (
site_start). - Налаштувати плагін перемикання (домен/префікс).
- Оновити Nginx (передача HTTP_HOST).
- Перевірити крос-контекстні посилання.
- Протестувати перемикання.
Що входить у налаштування під ключ
- Аудит поточної структури сайту.
- Створення контекстів і прив'язка доменів.
- Розробка плагіна перемикання.
- Конфігурація сервера (Nginx/Apache).
- Перенесення контенту в нові контексти.
- Документація та навчання адміністраторів.
- Технічна підтримка на 2 тижні.
Замовте налаштування контекстів MODX під ключ. Зв'яжіться з нами — обговоримо деталі вашого проєкту. Отримайте готове рішення за 2-3 дні з гарантією працездатності.







