Налаштування контекстів 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 дні з гарантією працездатності.







