Markus Michalski FAQ

XML Sitemap Generator: Technische Details

Technische Details des XML Sitemap Generators für OXID eShop 7: erzeugte Dateien, XML-Aufbau, tatsächlicher Ablauf, Klassen, Mehrsprachigkeit, Datenbanktabelle, Lebenszyklus und Grenzen.

English Version

Zurück zur Übersicht

XML Sitemap Generator: Technische Details

Erzeugte Dateien

Alle Dateien liegen im Ausgabeverzeichnis. Mit den Standardeinstellungen ist das source/export/:

source/export/
├── sitemap.xml                 # Sitemap-Index
├── sitemap-products.xml        # Produkte
├── sitemap-categories.xml      # Kategorien
├── sitemap-cms.xml             # CMS-Seiten
├── sitemap-manufacturers.xml   # Hersteller
└── sitemap-static.xml          # Statische URLs (nur bei aktivierter Einstellung)

Pro Typ entsteht höchstens eine Datei. Für Produkte, Kategorien, CMS-Seiten und Hersteller enthält sie höchstens 50.000 URLs, die statische Sitemap hat kein Limit. Dateinamen mit Nummern wie sitemap-products-1.xml erzeugt das Modul nicht. Das Verzeichnis source/export/sitemap, das bei der Aktivierung angelegt wird, bleibt mit den Standardeinstellungen leer.

Aufbau der XML-Ausgabe

Jede URL wird mit loc, lastmod, changefreq und priority geschrieben:

<url>
  <loc>https://shop.example.com/Produkt-Seite/</loc>
  <lastmod>2026-01-15</lastmod>
  <changefreq>weekly</changefreq>
  <priority>0.8</priority>
</url>

Google wertet changefreq und priority nach eigener Dokumentation nicht aus, lastmod nur bei verlässlichen Werten. Das Modul schreibt die Felder trotzdem, weil das Sitemap-Protokoll sie vorsieht.

Standardwerte je Typ

Typ changefreq priority
Produkte weekly 0.8
Kategorien weekly 0.7
CMS-Seiten monthly 0.5
Hersteller monthly 0.6
Statische URLs Wert des Eintrags, sonst monthly Wert des Eintrags, sonst 0.5

Ablauf

graph TD
    A["GenerateSitemapCommand"] --> B["Einstellungen und Sprachen lesen"]
    B --> C["GenerateSitemapService"]
    C --> D["Query-Service je Typ"]
    D --> E["HreflangService (optional)"]
    E --> F["UrlBuilderService"]
    D --> F
    F --> G["XmlWriterService"]
    G --> H["FileWriterService"]
    H --> I["sitemap-typ.xml"]
    I --> J["Sitemap-Index sitemap.xml"]

Das Modul arbeitet ohne Cache, ohne Komprimierung (.xml.gz), ohne Ping an Suchmaschinen und ohne eigenen Scheduler. Jede Generierung liest die Daten neu aus der Datenbank und überschreibt die Dateien.

Klassen

Klasse Aufgabe
Command\GenerateSitemapCommand Konsolenbefehl mmd:sitemap:generate, Optionen, Sprach- und Typauswahl, Ausgabe
Service\Command\GenerateSitemapService Orchestriert Abfrage, Hreflang, URL-Aufbau, XML und Schreiben, erzeugt den Index
Service\Query\ProductQueryService, CategoryQueryService, CmsPageQueryService, ManufacturerQueryService Lesen der Inhalte per SQL gegen oxarticles, oxcategories, oxcontents, oxmanufacturers und oxseo
Service\Query\StaticUrlQueryService Liest die Tabelle mmd_sitemap_static_urls
Service\Domain\HreflangService Ermittelt alternative Sprach-URLs aus oxseo
Service\Domain\UrlBuilderService Baut je Datensatz die URL mit lastmod, changefreq, priority
Service\Domain\XmlWriterService Erzeugt Sitemap- und Index-XML mit DOMDocument
Service\Domain\FileWriterService Schreibt Dateien, legt Verzeichnisse an, löscht per --clear
Service\Bridge\OxidConfigReader, OxidSettingsBridge Lesen die Modul-Einstellungen sowie Shop-URL, Sprachen und Sprach-URLs
Core\Events Aktivierung und Deaktivierung
Controller\Admin\* Admin-Übersicht und Pflege statischer URLs

Mehrsprachigkeit

Datenbank

Das Modul legt nur die Tabelle mmd_sitemap_static_urls an (Spalten siehe Statische URLs). Alle anderen Daten liest es aus den OXID-Tabellen, ohne sie zu verändern. Es nutzt die Datenbankverbindung des Shops als PDO-Objekt.

Lebenszyklus

Ereignis Wirkung
Aktivierung (onActivate) Legt source/export/sitemap und die Tabelle mmd_sitemap_static_urls an, falls nicht vorhanden
Deaktivierung (onDeactivate) Keine Aktion, Dateien und Daten bleiben erhalten

Migrationen gibt es nicht. oe:module:apply-configuration übernimmt nur die Modul-Einstellungen, nicht die Tabelle.

Grenzen

Modulstruktur

mmd/sitemap/                       # source/modules/mmd/sitemap
├── metadata.php                   # Modul-ID mmd_sitemap, Einstellungen, Events
├── services.yaml                  # Dienste und Konsolenbefehl
├── menu.xml                       # Admin-Menü "Sitemap"
├── src/
│   ├── Command/                   # GenerateSitemapCommand
│   ├── Controller/Admin/          # Übersicht, Statische URLs
│   ├── Core/Events.php            # Aktivierung/Deaktivierung
│   ├── DTO/, Enum/, Model/        # Wertobjekte, Typen, StaticUrl-Modell
│   └── Service/                   # Bridge, Query, Domain, Command
└── views/                         # Admin-Templates und Übersetzungen