Налаштування мультисайтовості Statamic

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

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування мультисайтовості Statamic
Середня
~2-3 робочих дні
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування мультисайтовості Statamic

Statamic Pro підтримує кілька сайтів з однієї інсталяції з різними доменами, мовами та наборами контенту. Контент може бути спільним для всіх сайтів або унікальним для кожного.

Налаштування сайтів

// config/statamic/sites.php
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/'),
    ],
  ],
];

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

# content/collections/blog.yaml
sites:
  - default
  - english
  - german

Локалізовані записи зберігаються у папках за handle сайту:

content/collections/blog/
├── default/
│   └── my-post.md           # українська версія
├── english/
│   └── my-post.md           # англійська версія
└── german/
    └── my-post.md           # німецька версія

Якщо локалізована версія не створена — Statamic показує fallback на основний сайт.

Глобали з локалізацією

# content/globals/site.yaml (default)
title: My Site
phone: +7 999 123-45-67
footer_text: © 2024 My Site

# content/globals/site/english.yaml (override для en)
title: My Site
phone: +44 20 1234 5678
footer_text: © 2024 My Site

Переключувач мов в 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 }}

Спрощений варіант через хелпер:

{{ locales }}
    <a href="{{ url }}" lang="{{ locale }}" {{ if is_current }}aria-current="page"{{ /if }}>
        {{ name }}
    </a>
{{ /locales }}

PHP-заприти з урахуванням сайту

use Statamic\Facades\Entry;
use Statamic\Facades\Site;

// Записи поточного сайту
$posts = Entry::query()
    ->where('collection', 'blog')
    ->where('site', Site::current()->handle())
    ->get();

// Записи конкретного сайту
$enPosts = Entry::query()
    ->where('collection', 'blog')
    ->where('site', 'english')
    ->get();

SEO: hreflang теги

{{# У <head> layout #}}
{{ if entry }}
    {{ locales }}
        <link rel="alternate"
              hreflang="{{ locale }}"
              href="{{ url }}">
    {{ /locales }}
    <link rel="alternate" hreflang="x-default" href="{{ entry:url }}">
{{ /if }}

Налаштування мультисайту з 2–3 мовами — 1–2 дні.