Markus Michalski FAQ

XML-Sitemap: Konfiguration

Konfiguration der XML-Sitemap für Sylius 2: globale Schlüssel mit Standardwerten, Einstellungen pro Channel im Admin, Bilder auf einem CDN, statische Seiten, robots.txt und mehrere Channels.

English Version

Zurück zur Übersicht

XML-Sitemap: Konfiguration

Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.

Die Konfiguration besteht aus zwei Teilen: den globalen Schlüsseln in config/packages/mmd_sylius_sitemap.yaml und den Einstellungen pro Channel im Admin.

Globale Schlüssel

Alle Schlüssel sind optional:

mmd_sylius_sitemap:
    scheme: https
    storage_dir: '%kernel.project_dir%/var/sitemap'
    max_urls_per_file: 50000
    max_bytes_per_file: 47185920
    image_base_path: /media/image/
    static_routes:
        - sylius_shop_homepage
Schlüssel Standard Beschreibung
scheme https Schema aller erzeugten absoluten URLs. Erlaubt sind http und https
storage_dir %kernel.project_dir%/var/sitemap Ablageordner der erzeugten Dateien, ein Unterordner pro Channel. Darf nicht leer sein
max_urls_per_file 50000 Ab dieser URL-Anzahl beginnt eine neue Datei. Erlaubt sind 1 bis 50000 (Grenze des Sitemap-Protokolls)
max_bytes_per_file 47185920 (45 MiB) Ab dieser unkomprimierten Größe beginnt eine neue Datei. Erlaubt sind 1024 Byte bis 52428800 Byte (50 MiB)
image_base_path /media/image/ Öffentlicher Pfad, unter dem lokale Produktbilder ausgeliefert werden
static_routes [sylius_shop_homepage] Shop-Routen ohne Parameter, die je Sprache einmal aufgeführt werden

Eine Datei wird bei dem Limit geteilt, das zuerst erreicht ist. So bleibt die 50-MB-Grenze des Protokolls auch bei vielen Sprachen und Bildern pro Produkt eingehalten.

storage_dir muss Deployments überstehen und für den Benutzer des Befehls schreibbar sowie für den Webserver lesbar sein. Wie du das sicherstellst, steht unter Installation und Betrieb.

Einstellungen pro Channel

Admin-Seitenleiste → MMKreativ Plugins → XML-Sitemap

Die Seite zeigt ein Grid mit den Spalten Channel, Aktiviert, URLs und Zuletzt generiert. Über „Erstellen“ legst du pro Channel eine Zeile an, über die Zeilenaktionen bearbeitest oder löschst du sie. Pro Channel gibt es höchstens eine Zeile. Beim Bearbeiten lässt sich der Channel nicht mehr ändern, damit bereits erzeugte Dateien nicht verwaisen.

Einstellung Standard Beschreibung
Sitemap für diesen Channel aktivieren aus Hauptschalter. Nur aktivierte Channels werden generiert und ausgeliefert
Produkte an Produkte aufnehmen
Kategorien an Kategorien aufnehmen
Statische Seiten an Startseite und die in static_routes genannten Routen aufnehmen
Produktbilder an Bilder je Produkt-URL auflisten (Image-Sitemap)
Hreflang-Alternativen an Sprachversionen einer Seite untereinander verlinken. Wirkt nur bei mehr als einer Sprache
Produkte: Änderungshäufigkeit wöchentlich Wert für changefreq
Produkte: Priorität 0.8 Wert für priority
Kategorien: Änderungshäufigkeit wöchentlich Wert für changefreq
Kategorien: Priorität 0.6 Wert für priority
Statische Seiten: Änderungshäufigkeit monatlich Wert für changefreq
Statische Seiten: Priorität 0.5 Wert für priority

Die Änderungshäufigkeit kennt die Werte immer, stündlich, täglich, wöchentlich, monatlich, jährlich und nie. Die Priorität liegt zwischen 0.0 und 1.0 in Schritten von 0.1 und ist nur ein Hinweis an Suchmaschinen auf die relative Wichtigkeit innerhalb deiner eigenen Seite. Es gibt je Inhaltstyp einen Wert für den ganzen Channel, keinen pro Produkt oder Kategorie.

Ein Channel braucht einen Hostnamen und eine Standardsprache und muss in Sylius aktiviert sein. Sylius löst nur aktivierte Channels über den Host auf, Dateien eines deaktivierten Channels würden nie ausgeliefert. Fehlt etwas davon, meldet die Generierung einen Fehler für diesen Channel.

Praxis-Beispiele

Einsprachiger Shop mit Standardwerten

Im Admin eine Zeile für den Channel WEB anlegen, „Sitemap für diesen Channel aktivieren“ ankreuzen, speichern und generieren. Die static_routes bleiben bei sylius_shop_homepage.

Shop mit Bildern auf einem CDN

Liegen die Produktbilder auf einem CDN und speichert Sylius dafür eine absolute URL im Bildpfad (zum Beispiel https://cdn.example.com/media/produkt.jpg), übernimmt das Plugin diese URL unverändert. image_base_path wirkt nur auf Pfade ohne http:// oder https://. Liegen lokale Bilder unter einem anderen Pfad, passt du ihn an:

mmd_sylius_sitemap:
    image_base_path: /uploads/produkte/

Weitere statische Seiten aufnehmen

Alle Shop-Routen ohne Parameter lassen sich aufnehmen. Eigene Routen trägst du zusätzlich zur Startseite ein:

mmd_sylius_sitemap:
    static_routes:
        - sylius_shop_homepage
        - app_shop_imprint
        - app_shop_about

app_shop_imprint und app_shop_about stehen hier für Routen deiner eigenen Anwendung. Jede Route erscheint einmal pro Sprache des Channels.

Eigener Ablageordner auf dauerhaftem Speicher

mmd_sylius_sitemap:
    storage_dir: /var/shared/sitemap

In der robots.txt bekanntmachen

Die Sitemap liegt unter https://<Host des Channels>/sitemap-index.xml. Trage sie in die robots.txt des jeweiligen Hosts ein:

Sitemap: https://shop.example.com/sitemap-index.xml

Das Plugin liefert keine Twig-Funktion und keine robots.txt. Die Zeile trägst du selbst in die robots.txt ein, die dein Shop ausliefert.

Mehrere Channels

Lege für jeden Channel eine eigene Zeile an. Jeder Channel bekommt eigene Dateien unter storage_dir/<Channel-Code>/ und wird auf seinem eigenen Host ausgeliefert.