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







