XML-Sitemap: Installation und Betrieb
Installation der XML-Sitemap für Sylius 2 über Packeton: Bundle und Routen, Setup-Befehl, Update, Cronjob für die regelmäßige Generierung, Ablageordner und Deinstallation.
XML-Sitemap: Installation und Betrieb
Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Voraussetzungen
Sylius ^2.2, PHP ^8.3 mit ext-xmlwriter, Symfony ^7.4 und MySQL 8 oder MariaDB. Die vollständige Liste steht in der Übersicht.
Installation
Composer (Packeton)
Das Plugin liegt in einem privaten Repository, das über Packeton (
https://packeton.markus-michalski.net) bereitgestellt wird. Die Zugangsdaten bekommst du nach dem Lizenzkauf.
Repository in der composer.json des Shops eintragen:
{ "repositories": [{ "type": "composer", "url": "https://packeton.markus-michalski.net" }] }
Paket installieren:
composer require mmd/sylius-sitemap-plugin
Danach in dieser Reihenfolge:
-
Bundle in
config/bundles.phpregistrieren:Mmd\SyliusSitemapPlugin\MmdSyliusSitemapPlugin::class => ['all' => true], -
Routen in
config/routes/mmd_sylius_sitemap.yamlimportieren:mmd_sylius_sitemap_admin: resource: "@MmdSyliusSitemapPlugin/config/routes/admin.yaml" mmd_sylius_sitemap_shop: resource: "@MmdSyliusSitemapPlugin/config/routes/shop.yaml" -
Setup-Befehl ausführen:
bin/console mmd:sitemap:setup
Die Shop-Routen gehören auf die oberste Ebene, nicht unter das Präfix
/{_locale}der Sylius-Shop-Routen. Crawler fragen die Sitemap direkt unter der Wurzel des Hosts ab.
Admin-Grid, Twig-Hooks und das Doctrine-Mapping registriert das Bundle selbst, dafür ist keine weitere Konfiguration nötig.
Der Setup-Befehl
bin/console mmd:sitemap:setup ersetzt doctrine:migrations:migrate:
- Er führt nur die noch offenen Migrationen dieses Plugins aus (sie legt die Tabelle
mmd_sylius_sitemap_channel_settingsan), nichts von der App oder anderen Plugins. - Er ist idempotent: Ohne neue Migration passiert nichts, auch nach jedem
composer updateist er gefahrlos. - Er prüft, ob die Admin- und Shop-Routen importiert sind, und gibt andernfalls den Snippet aus. Er schreibt nie in
config/. - Sind Migrationen von Sylius selbst noch offen, bricht er ab und bittet darum, zuerst
bin/console doctrine:migrations:migrateauszuführen. - Er fragt vor dem Ausführen nach Bestätigung. In Skripten gibst du
--no-interactionmit.
Wer doctrine:migrations:migrate selbst ausführt, erreicht dasselbe.
Update
composer update mmd/sylius-sitemap-pluginbin/console mmd:sitemap:setup(ohne neue Migration passiert nichts)bin/console cache:clear
Regelmäßig generieren
Die Sitemap wird nicht bei jeder Katalogänderung neu erzeugt. Lass den Befehl regelmäßig laufen, zum Beispiel täglich:
15 3 * * * cd /var/www/shop && bin/console mmd:sitemap:generate
Container ohne Cron-Daemon starten den Befehl stattdessen aus einer Sleep-Schleife unter supervisord.
Der Ablageordner
storage_dirmuss Deployments überstehen und für den Benutzer des Befehls schreibbar sowie für den Webserver-Benutzer lesbar sein. Wirdvar/bei jedem Deployment neu angelegt, mountest du das Verzeichnis dauerhaft oder generierst direkt nach dem Deployment.
Deinstallation
Reihenfolge einhalten, solange das Bundle noch registriert ist:
-
Migration zurückrollen:
bin/console doctrine:migrations:execute --down 'Mmd\SyliusSitemapPlugin\Migrations\Version20261001100000' -
Routen-Datei
config/routes/mmd_sylius_sitemap.yamlund den Eintrag inconfig/bundles.phpentfernen. -
composer remove mmd/sylius-sitemap-plugin -
Optional das Verzeichnis
storage_dir(Standardvar/sitemap) löschen.
Das Zurückrollen löscht die Einstellungen aller Channels. Die erzeugten XML-Dateien bleiben im Dateisystem liegen, bis du sie entfernst.