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). Свяжитесь с нами, чтобы обсудить ваш проект. Закажите аудит текущей конфигурации — выявим узкие места и предложим оптимизацию.







