Zum Inhalt springen
Abstraktes Relief aus dunklem Papier: eine Säule verzweigt sich in drei Plattformen mit unterschiedlichen Oberflächen

Statamic 6 Multi-Site Setup: ein Repo, viele Sprachen

Statamic 6 unterstützt Multi-Site out of the box. Schritt für Schritt zur deutsch-englischen Site mit shared Blueprints, getrennten Trees und korrektem URL-Routing.

4 min Lesezeit Statamic

Warum Multi-Site

Eine Codebase, mehrere Sprachen, klare Trennung.

Multi-Site in Statamic 6 ist kein Plugin und kein Hack, sondern ein First-Class-Feature der Statamic-Pro-Lizenz. Sie definieren pro Site eine eigene URL, eine eigene Sprache und ein eigenes Locale - die Inhalte teilen sich Blueprints und Fieldsets, aber jede Site hat ihre eigenen Entries und ihren eigenen Tree. Das passt zur Realität: dieselbe Marke, dieselbe Struktur, anderer Sprachraum.

Neben der bestehenden Site gleitet eine zweite orange Site heran, mit derselben noch leeren Ordnerstruktur.

Multi-Site aktivieren

Aktiviert wird Multi-Site über den please-Befehl. Statamic legt Ihnen dann eine zweite Site in resources/sites.yaml an und richtet die nötigen Ordner-Strukturen unter content/ ein. Bestehende Entries werden automatisch der Default-Site zugeordnet.

terminal bash
# Aktiviert Multi-Site in der App
php please multisite

# Anschließend die sites.yaml prüfen und die zweite Site benennen
# Default heißt sie meist "secondary" - wir benennen sie immer um.
Ein Doppelhaus unter einem Dach mit zwei Haustüren, die neue Tür ist orange: zwei Sprachen unter einer Adresse per Pfad.

sites.yaml konfigurieren

Pro Site definieren Sie name, locale, url und attributes. Die url darf ein Pfad-Prefix sein (/en/) oder eine eigene Domain. Pfad-Prefix ist einfacher zu betreiben, eigene Domain besser für SEO in stark getrennten Märkten. Wir starten meistens mit Pfad-Prefix und ziehen später um, wenn die SEO-Strategie es verlangt.

resources/sites.yaml yaml
default:
  name: 'MARCODES (Deutsch)'
  locale: de_DE
  lang: de
  url: /
  attributes:
    hreflang: de
en:
  name: 'MARCODES (English)'
  locale: en_US
  lang: en
  url: /en/
  attributes:
    hreflang: en

Multi-Site geplant?

Wir setzen Statamic-Multi-Site auf, übersetzen vorhandene Inhalte und richten den Übersetzungs-Workflow ein.

Setup anfragen

Collections und Trees

Welche Inhalte teilen Sie sich Sites, welche nicht?

Pro Collection entscheiden Sie, welche Sites Sie bedienen. Blog auf beiden Sites - gerne. News nur Deutsch - auch okay. Die Trennung passiert in der Collection-Konfiguration, nicht in der Sites-Konfiguration.

Ein Buchständer mit demselben Buch in drei Ausgaben, jede Sprache hat ihr eigenes Exemplar, die neue Ausgabe ist orange.

Sites pro Collection festlegen

In der collection-yaml-Datei listen Sie unter sites die Handles aller Sites, auf denen die Collection verfügbar sein soll. Statamic legt dann pro Site einen eigenen Tree unter content/trees/collections/<handle>/<site>.yaml an. Inhalte werden im Control Panel pro Site verwaltet - Übersetzungen sind eigene Entries, keine Übersetzungs-Felder.

content/collections/blog.yaml yaml
title: Blog
route: '{mount}/{slug}'
mount: 8c5d4f7a-0123-4567-89ab-cdef01234567
template: blog/show
sort_dir: desc
sort_field: date
sites:
  - default
  - en
taxonomies:
  - tags
propagate: false
Ein Kopierer würde nur leere Geisterkopien ausspucken, echt ist allein die von Hand geschriebene orange Übersetzung daneben.

propagate true oder false?

Mit propagate true legt Statamic neue Entries automatisch in allen Sites als unveröffentlichte Kopie an. Klingt komfortabel, sorgt aber für Geisterseiten, wenn ein Sprachzweig regelmäßig ohne Übersetzung bleibt. Unsere Empfehlung: propagate auf false und Übersetzungs-Workflow im Control Panel.

Routing

URLs sauber pro Site auflösen.

Statamic erkennt die Site automatisch über die url aus sites.yaml. Innerhalb von Templates und Tags haben Sie die aktuelle Site überall verfügbar - wichtig für Sprach-Switcher, hreflang-Tags und sprachspezifische Globals.

Ein Aufzug, das Stockwerk ohne Übersetzung ist nicht wählbar, der orange Knopf bringt sicher ins Erdgeschoss zur Startseite.

Sprach-Switcher im Layout

Mit dem locales-Loop iterieren Sie im Template über alle verfügbaren Sites des aktuellen Entries. Existiert in der Ziel-Site noch keine Übersetzung, können Sie entweder verbergen oder zur Home-URL der Ziel-Site weiterleiten - Letzteres ist freundlicher fürs SEO.

resources/views/layout.antlers.html antlers
<ul class="lang-switch">
    {{ locales }}
        <li>
            {{ if current }}
                <span aria-current="page">{{ name }}</span>
            {{ else }}
                <a href="{{ url ?? site:url }}" hreflang="{{ short_locale }}">
                    {{ name }}
                </a>
            {{ /if }}
        </li>
    {{ /locales }}
</ul>
Zwei Fahnen stehen auf einem gemeinsamen Doppelhalter nebeneinander statt gegeneinander, eine Fahne ist orange.

Ihre hreflang-Tags nicht vergessen

Google braucht pro Sprach-Variante einen link rel="alternate" hreflang im head. Setzen Sie zusätzlich x-default auf Ihre Default-Site. Ohne hreflang ranken zwei Sprachversionen oft gegeneinander statt nebeneinander.

Hat das geholfen? Wir machen Audit, Workshop oder Coaching auch live.

Pakete direkt im Shop. Unser Standard-Tagessatz liegt bei 1.500 € netto.

Multi-Site-Setup anfragen