Налаштування багатосайтовості в Statamic: конфіг, локалізація, hreflang

Коли бізнес виходить на нові ринки, мультимовність і мультисайтовість стають необхідністю, але розрізнені CMS створюють хаос в управлінні та SEO. Ми налаштовуємо мультисайтовість у Statamic Pro, об'єднуючи всі версії сайту в одну інсталяцію з єдиним адмін-інтерфейсом. Наша команда реалізує проєкт під ключ — від конфігурації та локалізації до коректних hreflang і перемикача мов, забезпечуючи стабільну роботу та подальшу підтримку.

Розробка та обслуговування будь-яких видів сайтів:

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

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

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

Багатосайтовість Statamic та багатомовний контент – це потужний інструмент для економії ресурсів. Statamic Pro з коробки вміє обслуговувати кілька сайтів з однієї інсталяції — ми використовуємо цю можливість, щоб заощадити час та ресурси клієнтів. Типовий сценарій: компанія зростає, з'являються нові ринки. Замість п'яти окремих CMS — одна інсталяція, єдиний адмінський інтерфейс, спільні оновлення. Розберемо налаштування на прикладі реального проекту: інтернет-магазин з російською, англійською та німецькою версіями. Ви дізнаєтесь, як організувати конфігурацію, керувати локалізованими записами та реалізувати перемикання мов з коректними SEO-тегами.

Налаштування багатосайтовості Statamic

Які проблеми вирішує багатосайтовість

Типове завдання: інтернет-магазин хоче вийти на німецький ринок. Потрібен новий домен, переклад контенту, але корзина та каталог — спільні. Або кожен сайт — окремий бренд зі своєю структурою. Statamic вирішує це через конфіг sites.php та централізоване керування записами.

Перша проблема — дублювання коду. Без багатосайтовості довелося б розгортати окремі інсталяції — множаться бекенди, конфіги, оновлення. Statamic дозволяє тримати все в одному репозиторії.

Друга проблема — SEO-плутанина. Якщо на одному домені висять дві мови без hreflang, пошуковики можуть вважати їх дублями. Налаштуємо hreflang правильно.

Третя проблема — перемикання мов. Неочевидні моменти в Antlers: як показати посилання на переклад поточної сторінки, якщо його ще немає? Вирішимо через fallback-логіку.

Конфігурація sites.php

Базовий конфіг — config/statamic/sites.php. Вказуємо handle, locale, url та опціонально direction. Приклад для трьох мов:

return [
    'sites' => [
        'default' => [
            'name' => 'My Site UA',
            'locale' => 'uk_UA',
            'url' => env('APP_URL', '/'),
            'direction' => 'ltr',
            'attributes' => ['lang' => 'uk'],
        ],
        '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/'),
        ],
    ],
];

Локалізація колекцій

У 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). Це зручно, коли переклад ще не готовий.

SEO та перемикання мов

Як налаштувати 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 Якщо запис не опубліковано для жодного сайту

Практична реалізація

Процес роботи

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

Терміни та вартість

Налаштування багатосайту з 2–3 мовами — від 1 до 3 днів, включаючи тестування. Вартість: від €800 до €1500 в залежності від кількості мов та складності контенту. Для проектів з 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). Зв'яжіться з нами, щоб обговорити ваш проект. Замовте аудит поточної конфігурації — виявимо вузькі місця та запропонуємо оптимізацію.

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

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060