Dokumentation des Moduls Erweiterte XML-Sitemap für PrestaShop (dfsitemap)
dfsitemap installieren und einrichten: Inhalte, Bilder und Videos, hreflang, Ausschlussregeln, Stapelgenerierung, Cron, IndexNow und Multishop.
Das Modul Advanced XML Sitemap (dfsitemap) erzeugt die XML-Sitemaps von PrestaShop 8 und 9: einen Index pro Shop, eine Datei pro Sprache und Inhaltstyp, mit Bildern, Videos und hreflang-Tags. Diese Seite behandelt Installation, Einstellungen, Ausschlussregeln, Zeitplanung und Fehlerbehebung.
Installation
- Laden Sie das ZIP aus Ihrem DataFirefly-Kundenkonto herunter.
- Gehen Sie im Backoffice zu Module > Modulverwaltung > Modul hochladen und laden Sie das ZIP hoch.
- Öffnen Sie Shopeinstellungen > Traffic & SEO > Erweiterte XML-Sitemap. Drei Tabs oben auf der Seite führen zu Sitemaps und Einstellungen, zu den Ausschlussregeln und zu den Produktvideos.
- Ist das native Modul Google Sitemap (gsitemap) aktiv, deaktivieren Sie es und löschen Sie seine Dateien
*_sitemap.xmlim Shop-Stammverzeichnis. Solange gsitemap aktiv ist, zeigt das Modul eine Warnung. - Klicken Sie auf Jetzt erzeugen, dann auf Sitemaps in robots.txt eintragen.
- Reichen Sie die angezeigte Index-URL in der Google Search Console und den Bing Webmaster Tools ein.
Das Modul läuft von PrestaShop 8.0 bis 9.x mit demselben ZIP, im Multishop und mehrsprachig. Es braucht Schreibrechte im Shop-Stammverzeichnis, wo die Dateien dfsitemap-*.xml veröffentlicht werden, und in modules/dfsitemap/var/tmp/. Fehlt eines davon, erscheint ein Hinweis.
Die erzeugten Dateien
Für jeden Shop veröffentlicht das Modul einen Index dfsitemap-{Shop-ID}-index.xml, der auf Dateien nach Sprache und Typ verweist, zum Beispiel dfsitemap-1-de-product-1.xml. Erreicht eine Datei die festgelegte URL-Zahl oder 45 MB, geht der Rest in -2, -3 usw. Eigene URLs ohne Sprache werden in dfsitemap-1-all-custom-1.xml gesammelt.
Sind suchmaschinenfreundliche URLs aktiv, wird der Index auch unter /sitemap.xml auf der Domain jedes Shops ausgeliefert. Eine physische Datei sitemap.xml im Stammverzeichnis hat Vorrang vor dieser Adresse: Das Modul weist darauf hin.
Die Dateien entstehen in einem temporären Ordner und werden dann Shop für Shop veröffentlicht. Die alten Sitemaps bleiben während der Generierung online, nicht mehr benötigte Dateien werden bei der Veröffentlichung gelöscht.
Einstellungen
Die Einstellungen folgen dem Multishop-Kontext: Im Kontext eines einzelnen Shops gelten die gespeicherten Werte nur für diesen Shop.
Inhalt
- Inhaltstypen: statische Seiten, Produkte, Kategorien, CMS-Seiten, CMS-Kategorien, Marken, Lieferanten, eigene URLs. Nur aktive Inhalte werden aufgeführt.
- Statische Seiten: Startseite, Bestseller, Neue Produkte, Preisnachlässe, Marken- und Lieferantenliste, Filialen, Kontakt, Sitemap-Seite. Marken- und Lieferantenliste werden übersprungen, wenn ihre Seite in den Shop-Einstellungen deaktiviert ist.
- Sprachen: Lassen Sie alles angehakt, um automatisch den aktiven Sprachen jedes Shops zu folgen.
- Nur in der Suche sichtbare Produkte: Standardmäßig werden nur Produkte mit der Sichtbarkeit Überall oder Nur Katalog aufgeführt.
- Eigene URLs: eine pro Zeile. Ein relativer Pfad wie
/blog/wird an die Shop-URL angehängt. - Zusätzliche Sitemaps: absolute URLs von Sitemaps, die anderswo erzeugt werden, etwa von einem Blog-Modul oder einer WordPress-Seite auf derselben Domain. Sie werden in den Index des Shops aufgenommen.
Eine CMS-Seite, deren Option Indexierung durch Suchmaschinen deaktiviert ist, liefert PrestaShop mit einem noindex-Tag aus. Das Modul führt sie nicht auf und zeigt an, wie viele Seiten betroffen sind. Aktivieren Sie die Option auf den Seiten, die indexiert werden sollen.
Bilder und Videos
- Bild-Sitemap und alle Produktbilder (sonst nur das Titelbild), in der gewählten Bildgröße, standardmäßig
large_default. - Bilder von Kategorien, Marken und Lieferanten: das Originalbild jeder Einheit, sofern vorhanden.
- Video-Sitemap und YouTube- und Vimeo-Erkennung: Das Modul findet eingebettete Videos in Produktbeschreibungen und CMS-Seiten. Titel und Dauer von Vimeo-Videos werden einmal abgerufen und zwischengespeichert.
Hreflang
- hreflang-Alternativen: Jede URL listet ihre Übersetzungen auf. Sinnvoll, sobald der Shop mehrere Sprachen hat.
- hreflang-Code: Sprache und Region (
de-DE, aus dem Sprachcode unter International > Sprachen) oder nur Sprache (de). - x-default-Sprache: Standardsprache des Shops, eine bestimmte Sprache oder keine.
Tags und Anzeige
- lastmod: Datum der letzten Änderung von Produkten, Kategorien, CMS-Kategorien, Marken und Lieferanten.
- changefreq und priority: standardmäßig aus, Google ignoriert sie.
- Lesbare Anzeige: Ein XSL-Stylesheet zeigt Index und Dateien im Browser als Tabelle an. Suchmaschinen ignorieren es.
Generierung
- Häufigkeit: von stündlich bis einmal wöchentlich, vom Cron verwendet.
- Bei Inhaltsänderungen neu erzeugen: Wird ein Produkt, eine Kategorie, eine CMS-Seite, eine Marke oder ein Lieferant gespeichert, erzeugt der nächste Cron-Aufruf neu, ohne die Häufigkeit abzuwarten, höchstens einmal pro Stunde.
- URLs pro Datei: standardmäßig 10.000, zwischen 100 und 50.000.
- Elemente pro Stapel: standardmäßig 50. Auf langsamen Servern verringern.
- Zeitbudget pro Anfrage: standardmäßig 20 Sekunden, unter dem
max_execution_timedes Servers halten. Im Backoffice ist jede Anfrage auf 15 Sekunden begrenzt.
Ausschlussregeln
Der Tab Ausschlussregeln listet die aktiven Regeln. Jede Regel gilt für alle Shops oder für einen einzelnen und wirkt ab der nächsten Generierung.
- Produkte: nach ID, in einer Kategorie (jede Zuordnung, Unterkategorien eingeschlossen), einer Marke, eines Standardlieferanten, nicht vorrätig, mit Preis null, ohne Bild.
- Kategorien: nach ID, oder eine Kategorie mit allen Unterkategorien. Die Produkte bleiben aufgeführt, sofern keine Produktregel sie entfernt.
- CMS-Seiten: nach ID, oder eine CMS-Kategorie mit ihren Seiten.
- Marken und Lieferanten: nach ID.
- URL enthält Text: ein Text pro Zeile, ohne Beachtung der Groß- und Kleinschreibung, zum Beispiel
?q=. - URL entspricht einem regulären Ausdruck: ein Ausdruck pro Zeile, ohne Begrenzer, ohne Beachtung der Groß- und Kleinschreibung, zum Beispiel
/de/.*-test$. Ein ungültiger Ausdruck wird beim Speichern abgelehnt.
IDs werden durch Kommas oder Zeilenumbrüche getrennt eingegeben. Eine per Regel ausgeschlossene URL verschwindet auch aus den hreflang-Alternativen ihrer Übersetzungen.
Produktvideos
Der Tab Produktvideos ist für Videos außerhalb von YouTube und Vimeo gedacht, oder wenn Sie einen bestimmten Titel und eine bestimmte Beschreibung wollen. Pro Video: das Produkt (Suche nach Name, Referenz oder ID), Titel und Beschreibung pro Sprache, die URL des Vorschaubilds, die URL der Videodatei oder des Players, die Dauer in Sekunden und der betroffene Shop. Ein leerer Titel in einer Sprache übernimmt den einer anderen Sprache, sonst den Produktnamen.
Generierung starten
Im Backoffice
Jetzt erzeugen startet die Generierung für die Shops des aktuellen Kontexts, mit Fortschrittsbalken. Die Seite verkettet die Anfragen bis zum Ende. Schließen Sie die Seite, bleibt der Auftrag gespeichert: Die Schaltfläche In diesem Fenster fortsetzen setzt ihn fort, oder der Cron übernimmt. Abbrechen stoppt den Auftrag, die Sitemaps online bleiben unverändert.
Per Cron
Das Dashboard zeigt eine URL wie https://ihr-shop.de/module/dfsitemap/cron?token=.... Rufen Sie sie alle 5 Minuten über die Cron-Verwaltung Ihres Hostings oder das PrestaShop-Modul für Cron-Aufgaben auf. Jeder Aufruf arbeitet für die Dauer des Zeitbudgets, der nächste setzt den Auftrag fort. Ein Shop wird neu erzeugt, wenn seine Häufigkeit erreicht ist, oder nach einer Inhaltsänderung, wenn die Option aktiv ist. Optionale Parameter: force=1 für sofortige Neugenerierung, id_shop=1,2 zur Einschränkung der Shops. Die Schaltfläche Neues Token erzeugen macht die alte URL ungültig.
Per Kommandozeile
Mit SSH-Zugang erledigt das Skript den ganzen Auftrag in einem Durchgang, unabhängig von der Katalogröße:
php /pfad/zu/prestashop/modules/dfsitemap/cron.php
php /pfad/zu/prestashop/modules/dfsitemap/cron.php --force --shop=1
Ohne --force werden nur die fälligen Shops neu erzeugt. Bei einem Fehler endet das Skript mit dem Code 1.
Bricht der Server eine Anfrage während der Generierung ab, wird der Auftrag ab der letzten gespeicherten Position fortgesetzt und die angefangenen Dateien werden repariert. Die Sperre der abgebrochenen Anfrage läuft nach dem Zeitbudget plus 90 Sekunden ab: Das Backoffice zeigt die verbleibende Zeit an.
IndexNow
IndexNow meldet eine neue oder geänderte Seite an Bing, Yandex, Seznam, Naver und die anderen Suchmaschinen des Protokolls, ohne auf deren nächsten Besuch zu warten. Google nutzt IndexNow nicht und liest weiterhin die Sitemap.
- Aktivieren Sie Geänderte Seiten per IndexNow senden im Block Sofortige Indexierung. Das Modul legt eine Schlüsseldatei im Shop-Stammverzeichnis an.
- Bei jedem Speichern eines Produkts, einer Kategorie, einer CMS-Seite, einer Marke oder eines Lieferanten kommt das Objekt in die Warteschlange.
- Beim nächsten Cron-Aufruf berechnet das Modul die URLs dieser Inhalte in allen Sprachen und sendet sie Domain für Domain. Nur Inhalte aus der Sitemap werden gesendet: Ein inaktives oder per Regel ausgeschlossenes Produkt nicht.
Der IndexNow-Block im Dashboard zeigt die Warteschlange, ob die Schlüsseldatei vorhanden ist, und die letzte Übermittlung mit HTTP-Code (200 oder 202 bei Erfolg). Bei einer Antwort 429 oder 5xx bleibt die Warteschlange für den nächsten Aufruf erhalten. Die Schaltfläche Jetzt senden löst eine sofortige Übermittlung aus.
robots.txt und Search Console
Die Schaltfläche Sitemaps in robots.txt eintragen fügt pro Shop eine Zeile Sitemap: zwischen den Markierungen # BEGIN dfsitemap und # END dfsitemap ein. Erzeugt PrestaShop robots.txt über Traffic & SEO neu, schreibt das Modul den Block erneut. Die Deinstallation entfernt ihn.
Reichen Sie in der Google Search Console die Index-URL jedes Shops (oder /sitemap.xml) in der Property der passenden Domain ein.
Multishop
Jeder Shop hat einen eigenen Index auf seiner Domain, eigene Sprachen und eigene Einstellungen. Wählen Sie im Multishop-Menü einen Shop, um ihm eigene Werte zu geben; im Kontext Alle Shops gelten die Werte für Shops ohne eigenen Wert. Für jeden Shop des Kontexts zeigt das Dashboard die Index-URL, das Datum der letzten Generierung sowie die Zahl der URLs pro Typ, der Bilder, Videos und Dateien.
Für Entwickler: URLs hinzufügen
Ein Modul kann seine Seiten über den Hook actionDfSitemapUrls zur Sitemap hinzufügen. Er wird bei der Verarbeitung des Typs Eigene URLs aufgerufen, erhält id_shop, languages (id_lang => ISO-Code) und link und gibt eine Liste von Einträgen zurück:
public function hookActionDfSitemapUrls($params)
{
$loc = [];
foreach ($params['languages'] as $idLang => $iso) {
$loc[$idLang] = $params['link']->getBaseLink($params['id_shop']) . $iso . '/blog/mein-artikel';
}
return [
['loc' => $loc, 'lastmod' => '2026-09-01 10:00:00', 'images' => ['https://.../bild.jpg']],
['loc' => 'https://ihr-shop.de/einzelne-seite'],
];
}
Ein Eintrag, dessen loc nach Sprache indiziert ist, erhält hreflang-Tags wie eine native Seite. Ungültige Einträge werden übersprungen, ohne die Generierung zu stoppen.
Häufige Fragen
Die Sitemap enthält keine CMS-Seite
Prüfen Sie bei jeder CMS-Seite die Option Indexierung durch Suchmaschinen. Eine Seite ohne diese Option ist noindex und wird nicht aufgeführt.
Marken oder Lieferanten erscheinen nicht
Das Modul folgt den Shop-Einstellungen: Ist die Marken- oder Lieferantenseite deaktiviert, wird dieser Typ übersprungen.
Die Generierung bleibt bei „Ein anderer Prozess bearbeitet den Auftrag“ stehen
Eine andere Anfrage hält die Sperre, oft der Cron. Wurde diese Anfrage abgebrochen, läuft die Sperre nach der angezeigten Zeit ab und die Generierung setzt von selbst fort.
Die Generierung bricht mit einem Fehler ab
Die Meldung erscheint oben im Dashboard und unter Erweiterte Einstellungen > Logs. Häufigste Ursache ist ein nicht beschreibbares Stammverzeichnis. Die bisherigen Sitemaps bleiben online.
IndexNow antwortet mit 403 oder 422
Die Suchmaschine findet die Schlüsseldatei nicht oder lehnt den Host ab. Öffnen Sie die im IndexNow-Block angezeigte URL der Schlüsseldatei: Sie muss den Schlüssel anzeigen. Prüfen Sie auch, ob die Domain des Shops mit der Domain der gesendeten URLs übereinstimmt.