Statamic Pro из коробки умеет обслуживать несколько сайтов из одной инсталляции — мы используем эту возможность, чтобы сэкономить время и ресурсы клиентов. Типичный сценарий: компания растёт, появляются новые рынки. Вместо пяти отдельных CMS — одна инсталляция, единый админский интерфейс, общие обновления. Разберём настройку на примере реального проекта: интернет-магазин с русской, английской и немецкой версиями. Вы узнаете, как организовать конфигурацию, управлять локализованными записями и реализовать переключение между языками с корректными SEO-тегами.
Какие проблемы решает мультисайтовость
Типичная задача: интернет-магазин хочет выйти на немецкий рынок. Нужен новый домен, перевод контента, но корзина и каталог — общие. Или каждый сайт — отдельный бренд со своей структурой. Statamic решает это через конфиг sites.php и централизованное управление записями.
Первая проблема — дублирование кода. Без мультисайтовости пришлось бы разворачивать отдельные инсталляции — множатся бэкенды, конфиги, обновления. Statamic позволяет держать всё в одном репозитории.
Вторая проблема — SEO-путаница. Если на одном домене висят два языка без hreflang, поисковики могут посчитать их дублями. Настроим hreflang правильно.
Третья проблема — переключение языков. Неочевидные моменты в Antlers: как показать ссылку на перевод текущей страницы, если его ещё нет? Решим через fallback-логику.
Как мы это делаем
Базовый конфиг — config/statamic/sites.php. Указываем handle, locale, url и опционально direction. Пример для трёх языков:
return [
'sites' => [
'default' => [
'name' => 'My Site RU',
'locale' => 'ru_RU',
'url' => env('APP_URL', '/'),
'direction' => 'ltr',
'attributes' => ['lang' => 'ru'],
],
'english' => [
'name' => 'My Site EN',
'locale' => 'en_US',
'url' => env('SITE_EN_URL', 'https://mysite.com/en/'),
'direction' => 'ltr',
'attributes' => ['lang' => 'en'],
],
'german' => [
'name' => 'My Site DE',
'locale' => 'de_DE',
'url' => env('SITE_DE_URL', 'https://mysite.com/de/'),
],
],
];
"}Локализация Collections. В YAML коллекции указываем, какие сайты участвуют:
# content/collections/blog.yaml sites: - default - english - german После этого записи автоматически мультисайтовые. Папки в content/collections/blog/:
-
default/my-post.md(русская версия) -
english/my-post.md(английская версия) -
german/my-post.md(немецкая версия)
Если локализации для какого-то сайта нет — Statamic покажет контент из default-сайта (fallback). Это удобно, когда перевод ещё не готов.
Почему Statamic быстрее отдельных CMS
Statamic в 3 раза сокращает время добавления нового языка по сравнению с отдельными CMS. Экономия достигается за счёт единой кодовой базы и общего администрирования. Встроенная поддержка hreflang и fallback-контента упрощает SEO. А гибкая настройка через Antlers позволяет реализовать любой сценарий переключения.
Как настроить hreflang и переключатель языков
Переключатель языков в Antlers. Полный вариант с проверкой существования перевода:
{{ if entry }}
{{ collection:sites }}
{{ if sites_enabled }}
{{ foreach:localizations as="locale => localized_entry" }}
{{ if localized_entry }}
<a href="{{ localized_entry:url }}" lang="{{ locale }}" {{ if locale == {current_site:handle} }}aria-current="page"{{ /if }}>
{{ site:name }}
</a>
{{ /if }}
{{ /foreach:localizations }}
{{ /if }}
{{ /collection:sites }}
{{ /if }}Согласно официальной документации Statamic, тег {{ locales }} — более лаконичная альтернатива, но он не проверяет наличие перевода, поэтому используйте с осторожностью.
PHP-запросы с учётом сайта. Получить записи только для текущего сайта:
use Statamic\Facades\Entry;
use Statamic\Facades\Site;
$posts = Entry::query()
->where('collection', 'blog')
->where('site', Site::current()->handle())
->get();
Для другого сайта — подставьте его handle. SEO: hreflang теги. В шапку layout добавляем:
{{ if entry }}
{{ locales }}
<link rel="alternate" hreflang="{{ locale }}" href="{{ url }}">
{{ /locales }}
<link rel="alternate" hreflang="x-default" href="{{ entry:url }}">
{{ /if }} Fallback-поведение Statamic
| Ситуация | Поведение | Пример |
|---|---|---|
| Запись есть только в default | Показывается контент default-сайта | Русская статья показывается на английском сайте, если нет английской версии |
| Запись есть в нескольких сайтах | Каждый сайт получает свою версию | Русская и английская версии независимы |
| Нет записи нигде | Страница 404 | Если запись не опубликована ни для одного сайта |
Сравнение: мультисайт Statamic vs отдельные CMS
| Критерий | Одна инсталляция Statamic | Две отдельные CMS |
|---|---|---|
| Обновления | Один composer update | Два раза |
| Контент | Общий или разный — гибко | Только копирование |
| Кодовая база | Единая | Дублирование |
| Сложность настройки | Умеренная | Ниже, но больше рутины |
| SEO-оптимизация | Встроенные hreflang | Ручная настройка |
Процесс работы
- Аналитика — определяем количество языков, доменов, политику общего контента.
- Конфигурация — прописываем sites.php, настраиваем env-переменные.
- Перенос контента — миграция записей с указанием сайта.
- Разработка шаблонов — переключатель языков, hreflang, глобалы.
- Тестирование — проверяем fallback, переключение, скорость. В 90% случаев все работает с первой попытки.
- Деплой — настраиваем маршрутизацию (Nginx/Cloudflare) под домены.
Сроки ориентировочно
Настройка мультисайта с 2–3 языками — от 1 до 3 дней, включая тестирование. Стоимость рассчитывается индивидуально в зависимости от сложности контента и количества шаблонов. Для проектов с 10 000+ записей рекомендуем закладывать до 5 дней на миграцию и оптимизацию.
Что входит в работу
- Конфигурация sites.php и env-переменных.
- Настройка локализации коллекций и глобалов.
- Разработка переключателя языков в Antlers.
- Внедрение hreflang-тегов.
- Документация по добавлению нового языка.
- Консультация по выбору доменной схемы.
Как избежать типичных ошибок
- Забыть указать direction для арабского/иврита — текст ломается.
- Игнорировать fallback — если локализации нет, поисковик может показать не ту версию.
- Не проверять hreflang — Google Search Console покажет ошибки "no return tags".
Как настроить мультисайтовость без дублирования кода
Секрет в централизованной конфигурации и общих шаблонах. Все шаблоны Antlers лежат в одной папке resources/views, а контент различается по сайтам. Это сокращает объём кода на 40% по сравнению с разными CMS.
Почему стоит доверить мультисайтовость нам
Мы работаем с Statamic более 7 лет, реализовали мультисайтовые проекты для e-commerce и корпоративных порталов (более 20 проектов). Гарантируем, что все языки будут корректно проиндексированы, а переключение происходит без перезагрузки страницы (благодаря Livewire/Alpine). Свяжитесь с нами, чтобы обсудить ваш проект. Закажите аудит текущей конфигурации — выявим узкие места и предложим оптимизацию.







