Настройка мультисайтовости 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/'),
    ],
  ],
];

Локализация Collections

# 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: Мой сайт
phone: +7 999 123-45-67
footer_text: © 2024 Мой сайт

# 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 дня.