XML Sitemap Generator: Generierung und Console Command
Sitemaps erzeugen: Button in der Plugin-Konfiguration, geplanter Task und Console Command mmd:sitemap:generate mit allen Optionen (clear, type, sales-channel, dry-run) sowie Cronjob-Alternative.
XML Sitemap Generator: Generierung und Console Command
Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net
Es gibt drei Wege, Sitemaps zu erzeugen. Alle drei nutzen denselben Generator und schreiben in dieselben Dateien.
| Admin-Button | Scheduled Task | Console Command | |
|---|---|---|---|
| Sales Channels | der in der Konfiguration gewählte | alle aktiven Storefront-Sales-Channels, für die die geplante Generierung aktiv ist | alle aktiven Storefront-Sales-Channels oder einer per -s |
| Inhaltstypen | alle aktivierten | alle aktivierten | alle aktivierten, einschränkbar per -t |
| Alte Dateien löschen | immer | immer | nur mit -c / --clear |
Admin-Button
In der Plugin-Konfiguration (Erweiterungen > Meine Erweiterungen > Erweiterte XML Sitemap) zeigt die Karte Manuelle Generierung für den oben gewählten Sales Channel die Anzahl der URLs insgesamt und je Typ (Produkte, Kategorien, CMS-Seiten, Hersteller).
- Sitemap generieren erzeugt die Dateien und meldet danach, wie viele Dateien mit wie vielen URLs in wie vielen Sekunden entstanden sind.
- Aktualisieren lädt die Zahlen neu.
- Ist Alle Sales Channels gewählt, zeigt die Karte nur den Hinweis, einen bestimmten Verkaufskanal auszuwählen. Statistik und Buttons erscheinen dann nicht.
Die angezeigten Zahlen sind Näherungswerte aus der Datenbank: Sie berücksichtigen weder den Filter Leere Kategorien ausschließen noch die Trennung von Kategorien und CMS-Seiten noch fehlende SEO-URLs. Die tatsächliche Zahl steht nach der Generierung im Ergebnis.
Der Button nutzt die Admin-API, siehe Admin-API.
Scheduled Task
Der Task mmd.sitemap.generation läuft im eingestellten Intervall (Standard: täglich) und erzeugt für jeden aktiven Storefront-Sales-Channel alle aktivierten Typen. Bestehende sitemap*.xml-Dateien im Zielverzeichnis des jeweiligen Sales Channels werden vorher gelöscht. Schlägt ein Sales Channel fehl, schreibt der Task einen Fehler ins Log und macht mit dem nächsten weiter.
Einstellungen und Voraussetzungen stehen unter Konfiguration und Installation.
Console Command
bin/console mmd:sitemap:generate
Optionen
| Option | Beschreibung |
|---|---|
-s, --sales-channel |
Nur für diese Sales-Channel-ID generieren. Ohne Angabe werden alle aktiven Storefront-Sales-Channels verarbeitet |
-t, --type |
Nur diese Typen generieren: products, categories, cms, manufacturers. Mehrfach angebbar |
-c, --clear |
Bestehende sitemap*.xml-Dateien im Zielverzeichnis vor der Generierung löschen |
--dry-run |
Nichts schreiben, nur die URL-Anzahl je aktiviertem Typ anzeigen |
Typen, die in der Konfiguration des Sales Channels ausgeschaltet sind, werden auch mit -t nicht erzeugt. Unbekannte Werte bei -t werden ignoriert. Bleibt kein Typ übrig, meldet der Befehl, dass für den Sales Channel kein Sitemap-Typ aktiviert ist.
Mit --dry-run listet der Befehl die URL-Anzahlen aller aktivierten Typen des Sales Channels, unabhängig von -t. Es sind dieselben Näherungswerte wie im Admin.
Beispiele
# Nur Produkte-Sitemap generieren
bin/console mmd:sitemap:generate -t products
# Alte Sitemaps löschen und neu generieren
bin/console mmd:sitemap:generate --clear
# Mehrere Typen
bin/console mmd:sitemap:generate -t products -t categories
# Nur für einen bestimmten Sales Channel
bin/console mmd:sitemap:generate -s 019b7dfcab75700fada02799328e8440
# Nur zählen, nichts schreiben
bin/console mmd:sitemap:generate --dry-run
Der Befehl gibt je Sales Channel die wirksame Konfiguration, den Ausgabepfad und die geschriebenen Dateien aus. Er endet nur dann mit einem Fehlercode, wenn kein aktiver Sales Channel gefunden wurde. Der Schalter für die geplante Generierung hat auf den Befehl keinen Einfluss.
Cron als Alternative zum Scheduled Task
Wenn du den Shopware-Scheduler nicht nutzen möchtest, schalte Automatische Generierung aktivieren aus und erzeuge die Sitemaps per Cronjob:
# Täglich um 3 Uhr
0 3 * * * cd /var/www/shopware && bin/console mmd:sitemap:generate --clear
Laufen Task und Cronjob gleichzeitig, wird die Sitemap doppelt erzeugt. Nutze nur einen der beiden Wege.