Настройка мультисайтовости в Statamic: конфиг, локализация, hreflang

Statamic Pro из коробки умеет обслуживать несколько сайтов из одной инсталляции — мы используем эту возможность, чтобы сэкономить время и ресурсы клиентов. Типичный сценарий: компания растёт, появляются новые рынки. Вместо пяти отдельных CMS — одна инсталляция, единый админский интерфейс, общие обно

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка мультисайтовости в Statamic: конфиг, локализация, hreflang
Средний
~2-3 дня

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

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 Ручная настройка

Процесс работы

  1. Аналитика — определяем количество языков, доменов, политику общего контента.
  2. Конфигурация — прописываем sites.php, настраиваем env-переменные.
  3. Перенос контента — миграция записей с указанием сайта.
  4. Разработка шаблонов — переключатель языков, hreflang, глобалы.
  5. Тестирование — проверяем fallback, переключение, скорость. В 90% случаев все работает с первой попытки.
  6. Деплой — настраиваем маршрутизацию (Nginx/Cloudflare) под домены.

Сроки ориентировочно

Настройка мультисайта с 2–3 языками — от 1 до 3 дней, включая тестирование. Стоимость рассчитывается индивидуально в зависимости от сложности контента и количества шаблонов. Для проектов с 10 000+ записей рекомендуем закладывать до 5 дней на миграцию и оптимизацию.

Что входит в работу

  • Конфигурация sites.php и env-переменных.
  • Настройка локализации коллекций и глобалов.
  • Разработка переключателя языков в Antlers.
  • Внедрение hreflang-тегов.
  • Документация по добавлению нового языка.
  • Консультация по выбору доменной схемы.

Как избежать типичных ошибок

  1. Забыть указать direction для арабского/иврита — текст ломается.
  2. Игнорировать fallback — если локализации нет, поисковик может показать не ту версию.
  3. Не проверять hreflang — Google Search Console покажет ошибки "no return tags".

Как настроить мультисайтовость без дублирования кода

Секрет в централизованной конфигурации и общих шаблонах. Все шаблоны Antlers лежат в одной папке resources/views, а контент различается по сайтам. Это сокращает объём кода на 40% по сравнению с разными CMS.

Почему стоит доверить мультисайтовость нам

Мы работаем с Statamic более 7 лет, реализовали мультисайтовые проекты для e-commerce и корпоративных порталов (более 20 проектов). Гарантируем, что все языки будут корректно проиндексированы, а переключение происходит без перезагрузки страницы (благодаря Livewire/Alpine). Свяжитесь с нами, чтобы обсудить ваш проект. Закажите аудит текущей конфигурации — выявим узкие места и предложим оптимизацию.