Уявіть: у вас три домени — mysite.ru, mysite.com, mysite.de. Окремі установки Craft CMS на кожному призводять до дублювання коду, розсинхронізації контенту та зайвих витрат на підтримку. Наша команда з 10+ років досвіду впровадила мультисайти для 30+ проєктів — від 2 до 8 мов. Економія ресурсів замовників становила 40–60% порівняно з окремими установками. Ми пропонуємо перевірене рішення — мультисайтову установку Craft CMS. Гарантуємо стабільну роботу та коректну індексацію. У цій статті розберемо архітектуру, налаштування Project Config, управління контентом і локалізацію полів.
Архітектура мультисайту: групи, сайти та домени
Налаштування починається зі створення груп сайтів і сайтів. Групи об'єднують сайти за змістом (наприклад, «Основні сайти» та «Мікросайти»). У кожній групі можна задати кілька сайтів з різними мовами, доменами та URL-шляхами. Стандартна конфігурація включає три сайти для російської, англійської та німецької мов. Для кожного вказується повний URL, що дозволяє пошуковим системам коректно індексувати всі версії.
Для опису конфігурації використовуйте Project Config — файли YAML у config/project/sites/. Приклад для тримовного сайту (всі три файли об'єднані в один блок для стислості):
# config/project/sites/mysite-ru.yaml name: 'My Site RU' handle: mySiteRu language: ru-RU primary: true enabled: true hasUrls: true baseUrl: 'https://mysite.ru/' # config/project/sites/mysite-en.yaml name: 'My Site EN' handle: mySiteEn language: en-US primary: false enabled: true hasUrls: true baseUrl: 'https://mysite.com/' # config/project/sites/mysite-de.yaml name: 'My Site DE' handle: mySiteDe language: de-DE primary: false enabled: true hasUrls: true baseUrl: 'https://mysite.de/' Після створення сайтів налаштуйте веб-сервер. Усі домени повинні вказувати на один корінь:
server { server_name mysite.ru mysite.com mysite.de; root /var/www/mysite/web; # стандартний Craft Nginx конфіг } Тепер у кожній секції вкажіть, як контент поширюється по сайтах. Порівняння методів:
| Метод | Опис | Коли використовувати |
|---|---|---|
all |
Запис створюється для всіх сайтів | Контент єдиний, потрібні лише переклади текстових полів |
none |
Тільки для сайту, де створено | Унікальний контент для кожного домену |
siteGroup |
Для сайтів з тієї ж групи | Наприклад, окрема група для промо-сайтів |
language |
Для сайтів з тією ж мовою | Якщо кілька сайтів однією мовою, але в різних регіонах |
Правильний вибір propagationMethod економить до 40% часу на управлінні записами. Приклад конфігурації секції з propagationMethod: all:
# config/project/sections/blog.yaml propagationMethod: all siteSettings: mySiteRu: hasUrls: true uriFormat: 'blog/{slug}' template: blog/_entry mySiteEn: hasUrls: true uriFormat: 'en/blog/{slug}' template: blog/_entry mySiteDe: hasUrls: true uriFormat: 'de/blog/{slug}' template: blog/_entry Як управляти локалізацією полів?
Кожне поле в Craft CMS має властивість translationMethod. Для мультисайту це ключовий інструмент. Правильне налаштування translationMethod скорочує час на оновлення контенту на 30–40%. Наприклад, заголовки можуть бути різними для кожного сайту, а зображення — спільними. Порівняння типових полів:
| Поле | translationMethod | Опис |
|---|---|---|
title |
site | Власний заголовок для кожного сайту |
publishDate |
none | Спільна дата публікації |
heroImage |
none | Спільне зображення для всіх версій |
body |
site | Унікальний текст для кожної мови |
slug |
site | Власний URL для кожного сайту |
Такий підхід дозволяє перевикористовувати медіа та службові поля, зберігаючи унікальність текстового контенту.
Перемикач мов у шаблоні
Щоб відвідувач міг перемикатися між версіями, додайте в шаблон блок з посиланнями на локалізовані записи:
{# Список усіх версій поточної сторінки #} <nav class="language-switcher"> {% for site in craft.app.sites.getAllSites() %} {% set localeEntry = entry.getLocalized().site(site).one() %} {% if localeEntry %} <a href="{{ localeEntry.url }}" lang="{{ site.language | slice(0, 2) }}" {% if site.id == currentSite.id %}aria-current="page"{% endif %}> {{ site.language | upper | slice(0, 2) }} </a> {% endif %} {% endfor %} </nav> {# Контент поточного сайту (автоматично) #} {% set posts = craft.entries().section('blog').all() %} {# Явне вказання сайту #} {% set enPosts = craft.entries().section('blog').site('mySiteEn').all() %} Переклади інтерфейсних рядків
Статичні рядки перекладаються через файли в translations/:
// translations/ru/site.php return [ 'Read more' => 'Читати далі', 'Published on {date}' => 'Опубліковано {date}', ]; У Twig використовуйте фільтр t:
{{ "Read more" | t('site') }} {{ "Published on {date}" | t('site', { date: entry.postDate | date('d.m.Y') }) }} Переваги мультисайту на Craft CMS перед окремими інсталяціями
Порівняння з альтернативами: мультисайт Craft CMS економить до 60% часу на оновленнях і знижує ризик розсинхронізації контенту. Як зазначено в документації Craft CMS: Project Config дозволяє синхронізувати налаштування між середовищами. Процес розгортання нової мови займає від 2 до 4 годин замість кількох днів при окремих установках. Індексація всіх версій у пошукових системах відбувається протягом 1–2 тижнів. Для масштабування вашого інтернет-проєкту впровадьте мультисайтовість — зв'яжіться з нами для детальної оцінки вашого проєкту. Наші інженери підготують індивідуальне рішення. Замовте консультацію з налаштування Craft CMS.
Що входить у налаштування мультисайту під ключ?
Комплексне налаштування включає:
- Створення Project Config для всіх сайтів і груп
- Прив'язку доменів і налаштування веб-сервера
- Конфігурацію секцій з оптимальним
propagationMethod - Локалізацію полів і налаштування перекладів
- Реалізацію перемикача мов
- Тестування та фіксацію конфігурації
- Інтеграцію з зовнішніми сервісами (перекладачі, CDN) для прискорення завантаження локалізованих версій
- Документацію з додавання нових мов
- Підтримку після запуску
Процес налаштування під ключ
Ми виконуємо налаштування мультисайту за 5 етапів:
- Проектування архітектури — вибір груп, доменів, мов. Враховуємо доменну структуру та мовні вподобання аудиторії.
- Створення Project Config для всіх сайтів і секцій.
- Налаштування веб-сервера та інтеграція з хостингом.
- Локалізація полів і конфігурація propagationMethod.
- Розробка перемикача мов і тестування.
Project Config дозволяє розгорнути нові сайти за хвилини, а не години — у 2–3 рази швидше за ручне введення.
Зв'яжіться з нашими інженерами для аудиту вашого проєкту. Отримайте консультацію з налаштування мультисайту на Craft CMS.







