<div class="prose prose-hyva max-w-none"><p>Welche Inhalte automatisch in die generierte Sitemap wandern, welche nicht, und wie eigene Modul-Inhalte wie unser Tutorial-Bereich nachträglich ergänzt werden können.</p><p>Magento bringt von Haus aus genau vier "Anbieter" mit, die zusammen den Inhalt jeder generierten <em>sitemap.xml</em> bestimmen: die Store-Root-URL selbst, Kategorien, Produkte und CMS-Seiten. Jeder Anbieter ist eine eigene PHP-Klasse (ein sogenannter "Item Provider"), die bei jeder Generierung gefragt wird: "welche URLs sollen für diesen Store in die Sitemap?" Alles, was nicht zu diesen vier Typen gehört – etwa ein komplett eigenes Modul wie unser Tutorial-Bereich – ist für Magento unsichtbar, bis jemand einen eigenen Anbieter dafür programmiert.</p>
<h3>Kategorien: alles oder nichts</h3>
<p>Alle Kategorien mit Status <strong>Enable Category = Yes</strong> landen automatisch in der Sitemap – es gibt in Magento KEINEN Einzel-Schalter "diese eine Kategorie aus der Sitemap ausschließen". Auch <strong>Include in Menu = No</strong> (Kategorie aus der Navigation ausblenden) hat keinerlei Einfluss auf die Sitemap-Aufnahme – beide Einstellungen sind komplett unabhängig voneinander. Wollen Sie eine bestimmte Kategorie wirklich aus der Sitemap fernhalten, bleibt praktisch nur <strong>Enable Category = No</strong> (dann ist sie aber auch im Shop selbst nicht mehr erreichbar) oder eine gezielte Ausnahme in der <code>robots.txt</code>.</p>
<h3>Produkte: sichtbar UND aktiviert</h3>
<p>Produkte werden nach zwei Kriterien gefiltert: <strong>Enable Product = Yes</strong> (Status) UND <strong>Visibility</strong> ungleich "Not Visible Individually" (also "Catalog", "Search" oder "Catalog, Search"). Ein deaktiviertes Produkt taucht nie auf; ein aktiviertes, aber auf "Not Visible Individually" gesetztes Produkt (z. B. eine einzelne Variante eines konfigurierbaren Produkts) ebenfalls nicht – nur das übergeordnete, sichtbare Hauptprodukt wird gelistet. Auch hier gibt es kein eigenes "In Sitemap aufnehmen"-Häkchen am Produkt selbst.</p>
<h3>CMS-Seiten</h3>
<p>Aktive CMS-Seiten (<strong>Enable Page = Yes</strong>) werden automatisch aufgenommen – dieselbe Alles-oder-nichts-Logik wie bei Kategorien.</p>
<h3>Priorität und Änderungshäufigkeit einstellen</h3>
<p>Unter <em>Stores > Configuration > Catalog > XML Sitemap</em> stellen Sie für Kategorien, Produkte und CMS-Seiten JEWEILS getrennt <strong>Frequency</strong> (wie oft sich der Inhalt üblicherweise ändert – reine Empfehlung an Suchmaschinen, keine technische Garantie) und <strong>Priority</strong> (0.0 bis 1.0, relative Wichtigkeit innerhalb Ihrer eigenen Sitemap) ein. Im selben Bereich steuert <strong>Product Images Include Policy</strong>, ob und welche Produktbilder als zusätzliche <code><image></code>-Einträge mit in die Sitemap wandern.</p>
<img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/priorit_t6kategorie.png}}" alt="PrioritätundÄnderungshäufigkeit" />
<h3>Was NICHT automatisch aufgenommen wird</h3>
<p>Jeder Inhalt, der über ein eigenes Modul läuft und keine Kategorie, kein Produkt und keine CMS-Seite ist, bleibt unsichtbar für die Sitemap – bis ein eigener Item Provider dafür registriert wird. Zwei konkrete Beispiele aus diesem Projekt:</p>
<ul>
<li><strong>Magefan Blog:</strong> bringt seinen eigenen Item Provider bereits mit (registriert über dessen eigene <code>di.xml</code>) – Blogartikel und die Blog-Übersicht erscheinen deshalb bereits automatisch in der Sitemap, ohne dass wir dafür etwas bauen mussten.</li>
<li><strong>Unser Tutorial-Bereich (Mironsoft_Tutorial):</strong> Serien und Kapitel unter <em>/tutorial/...</em> sind eine komplett eigene Datenstruktur (eigene Datenbanktabellen, eigener Router) – bis vor Kurzem fehlten sie deshalb komplett in der Sitemap. Wir haben das nachgerüstet: eine neue Klasse (<code>Mironsoft\Tutorial\Model\Sitemap\TutorialItemProvider</code>) meldet sich über die <code>di.xml</code> zusätzlich bei Magentos Sitemap-Mechanismus an und liefert bei jeder Generierung alle aktiven Serien- und Kapitel-URLs pro Store mit. Für Sie als Redakteur bedeutet das: Jede neue Tutorial-Serie und jedes neue Kapitel erscheint automatisch beim nächsten Sitemap-Lauf in der Sitemap – ganz ohne manuellen Zusatzschritt.</li>
</ul>
<h3>Sitemap bei Google einreichen</h3>
<p>Die generierte Sitemap allein reicht nicht – Google muss sie kennen. In der <strong>Google Search Console</strong> (kostenloses Google-Konto vorausgesetzt, Property für die Domain anlegen und verifizieren) unter <em>Sitemaps</em> die URL Ihrer Sitemap-Datei eintragen (z. B. <code>https://ihredomain.de/sitemap_de.xml</code>). Google crawlt sie danach regelmäßig selbstständig – ein erneutes manuelles Einreichen bei jeder Sitemap-Aktualisierung ist NICHT nötig.</p>
<p><strong>Praxis-Tipp:</strong> Prüfen Sie nach größeren Content-Ergänzungen (wie einer neuen Handbuch- oder Tutorial-Serie) in der Search Console unter <em>Sitemaps</em>, ob die "entdeckten URLs"-Zahl sich wie erwartet erhöht hat – ein Ausbleiben deutet meist auf einen noch nicht gelaufenen Generierungs-Cronjob oder einen Fehler im zuständigen Item Provider hin.</p>
<h3>Automatischer Eintrag in die robots.txt</h3>
<p>Unter <em>Stores > Configuration > Catalog > XML Sitemap > Search Engine Submission Settings</em> schaltet <strong>Enable Submission to Robots.txt</strong> auf "Yes" eine automatische <code>Sitemap:</code>-Zeile in der robots.txt frei, sobald die Sitemap generiert wurde. Das hilft nicht nur Google (dort ohnehin über Search Console angemeldet), sondern auch anderen Suchmaschinen wie Bing, die Sitemaps primär über die robots.txt entdecken.</p>
<img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/searchenginesubmissions6kategorie.png}}" alt="AutomatischerEintrag" />
<h3>Geplante Generierung überwachen</h3>
<p>Im Tab <strong>Generation Settings</strong> der jeweiligen Sitemap legen Sie <strong>Enabled</strong>, <strong>Start Time</strong> und <strong>Frequency</strong> (Daily/Weekly/Monthly) für die automatische Neuerzeugung per Cronjob fest. Zusätzlich lassen sich <strong>Error Email Recipient</strong>, <strong>Error Email Sender</strong> und <strong>Error Email Template</strong> hinterlegen – schlägt die Generierung fehl, erhalten Sie eine Benachrichtigung, statt es erst Wochen später an veralteten Sitemap-Inhalten zu bemerken.</p>
<img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/generationsettings6kategorie.png}}" alt="GeplanteGenerierung" />
<h3>Getrennte Sitemaps je Store View/Sprache</h3>
<p>Über <strong>Add Sitemap</strong> legen Sie pro Store View eine eigene Datei an (z. B. <code>sitemap_de.xml</code> für die deutsche und <code>sitemap_en.xml</code> für die englische Store View) – jede enthält dann ausschließlich die URLs der jeweiligen Sprachversion. Das ist bei mehrsprachigen Shops wichtig, damit Suchmaschinen die korrekten, sprachspezifischen URLs crawlen und nicht versehentlich URLs eines anderen Store Views in der falschen Sitemap landen.</p>
<h3>Größenlimits und automatische Aufteilung</h3>
<p>Die Felder <strong>Maximum No of URLs Per File</strong> und <strong>Maximum File Size</strong> (ebenfalls unter der XML-Sitemap-Konfiguration) begrenzen, wie viele URLs bzw. wie viel Datenvolumen eine einzelne Sitemap-Datei enthalten darf – gemäß dem offiziellen Sitemap-Protokoll maximal 50.000 URLs bzw. 50 MB pro Datei. Überschreitet Ihr Shop diese Grenzen, teilt Magento die Sitemap automatisch in mehrere Dateien auf und erzeugt zusätzlich eine übergeordnete Sitemap-Index-Datei, die auf alle Teildateien verweist – ohne dass Sie selbst etwas dafür tun müssen.</p>
<img loading="lazy" src="{{media url=wysiwyg/handbuch/1kapitel/sitemapfile6kategorie.png}}" alt="Größenlimits" />
</div>