Налаштування контекстів MODX для мультисайтовості

Налаштування контекстів MODX для мультисайтовості

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Налаштування контекстів MODX для мультисайтовості
Середній
~2-3 дні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1422
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1288
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    984
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1250
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    988
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1001

Налаштування контекстів 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 у налаштуваннях

Ці нюанси ми враховуємо при налаштуванні під ключ.

Чек-лист налаштування контекстів

  1. Створити контекст і задати параметри.
  2. Прив'язати кореневий ресурс (site_start).
  3. Налаштувати плагін перемикання (домен/префікс).
  4. Оновити Nginx (передача HTTP_HOST).
  5. Перевірити крос-контекстні посилання.
  6. Протестувати перемикання.

Що входить у налаштування під ключ

  • Аудит поточної структури сайту.
  • Створення контекстів і прив'язка доменів.
  • Розробка плагіна перемикання.
  • Конфігурація сервера (Nginx/Apache).
  • Перенесення контенту в нові контексти.
  • Документація та навчання адміністраторів.
  • Технічна підтримка на 2 тижні.

Замовте налаштування контекстів MODX під ключ. Зв'яжіться з нами — обговоримо деталі вашого проєкту. Отримайте готове рішення за 2-3 дні з гарантією працездатності.