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

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

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

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

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

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

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

Часті запитання

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1317
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1014
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

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