Представьте: у вас три домена — 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.







