Neu JTL Shop 5.2.2 Google Sitemap Fehler "Falscher Namensraum"

Bastian Weber

Gut bekanntes Mitglied
27. Juni 2017
124
18
Hallo zusammen,

ich habe die Sitemap bei Google eingetragen und bekomme folgende Fehlermeldung, mit der ich nichts anfangen kann.
Shoversion 5.2.2

"Sitemap-Index kann gelesen werden, enthält aber Fehler"
"Falscher Namensraum"
"Der Namensraum wird in der Sitemap bzw. im Sitemap-Index nicht ordnungsgemäß deklariert."
Beispiele
Zeile 2 Tag: sitemapindex
Bildschirmfoto 2023-03-14 um 12.14.24.png

Kennt jemand das Problem oder hat eine Lösung?
 

pedro

Aktives Mitglied
10. November 2006
64
3
Servus,
wir haben genau das gleiche Problem seit dem Update auf JTL Shop 5.2.2. Haben den Fehler am 24.02.2023 bei JTL gemeldet (Ticketnummer: 2023022410000587). Leider noch keine Lösung. Wird aber noch geprüft. Google kann die Sitemap aber scheinbar korrekt lesen.
LG Pedro
 

Bastian Weber

Gut bekanntes Mitglied
27. Juni 2017
124
18
Der Fehler ist in der Namensgebung in sitemap_index.xml und den zugehörigen xml.gz-Dateien.
Laut Google sollte es so in der sitemap_index.xml stehen:
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
steht aber
<sitemapindex xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">
Kann man das irgendwo selbst ändern? Habe da keinen Plan von. Bin einfach dem JTL Guide gefolgt.
 

dheinrich

Aktives Mitglied
28. April 2021
5
3
Moin Zusammen!

Da uns der Fehler genervt hat, haben wir jetzt selbst eine Modifikation angefertigt

Da diese Änderungen kein Plugin sind und weder Updatesicher sind, noch "die richtige Lösung" sind, ist es dennoch eine Lösung. Bevor man Code in seinem Shop verwendet, sollte dieser eigenständig geprüft werden. Der Support bei JTL wird meines Wissens nach nicht für eigenständige Änderungen tätig und ich werde ebenso keinen Support, keine Garantie und Gewährleistung dafür anbieten. Alle Änderungen auf eigene Gefahr. Wer Geduld mitbringt und sich dem oben erwähnten Ticket widmet, dem wird sicherlich auch irgendwann auch ohne diese Anpassung geholfen. Wer sich dennoch nach diesem Hinweis selbst helfen möchte, der geht in den Spoiler:
  1. Ich gehe in meinen Shop per S/FTP und gehe in den Ordner
    Code:
    /includes/src/Sitemap/SchemaRenderers
  2. In der Datei DefaultSchemaRenderer.php und GroupedSchemaRenderer.php werden dann alle Schema-URLs von https:// auf http:// geändert
  3. Es folgen Beispiele für den Code des JTL-Shops auf Version 5.2.2 - für andere Versionen müssten die Ersetzungen in Schritt zwei selbst vorgenommen werden,
Inhalt der Datei DefaultSchemaRenderer.php
PHP:
<?php declare(strict_types=1);

namespace JTL\Sitemap\SchemaRenderers;

/**
 * Class DefaultSchemaRenderer
 * @package JTL\Sitemap\SchemaRenderers
 */
final class DefaultSchemaRenderer extends AbstractSchemaRenderer
{
    /**
     * @param string[] $sitemapFiles
     * @return string
     */
    public function buildIndex(array $sitemapFiles): string
    {
        $xml  = $this->getXmlHeader();
        $xml .= '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
        foreach ($sitemapFiles as $url) {
            $xml .= "<sitemap>\n<loc>" . $url . "</loc>\n";
            if ($this->config['sitemap']['sitemap_insert_lastmod'] === 'Y') {
                $xml .= '<lastmod>' . \date('Y-m-d') . '</lastmod>' . "\n";
            }
            $xml .= '</sitemap>' . "\n";
        }
        $xml .= '</sitemapindex>' . "\n";

        return $xml;
    }

    /**
     * @return string
     */
    public function buildHeader(): string
    {
        $xml  = $this->getXmlHeader();
        $xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"';

        if ($this->config['sitemap']['sitemap_googleimage_anzeigen'] === 'Y' ||
            $this->config['sitemap']['sitemap_images_categories'] === 'Y' ||
            $this->config['sitemap']['sitemap_images_manufacturers'] === 'Y' ||
            $this->config['sitemap']['sitemap_images_newscategory_items'] === 'Y' ||
            $this->config['sitemap']['sitemap_images_news_items'] === 'Y' ||
            $this->config['sitemap']['sitemap_images_attributes'] === 'Y'
        ) {
            $xml .= ' xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"';
        }

        $xml .= ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' . "\n";
        $xml .= '  xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9' . "\n";
        $xml .= '  https://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">' . "\n";

        return $xml;
    }

    /**
     * @return string
     */
    public function buildFooter(): string
    {
        return '</urlset>';
    }
}

Inhalt der Datei GroupedSchemaRenderer.php
PHP:
<?php declare(strict_types=1);

namespace JTL\Sitemap\SchemaRenderers;

/**
 * Class GroupedSchemaRenderer
 * @package JTL\Sitemap\SchemaRenderers
 */
final class GroupedSchemaRenderer extends AbstractSchemaRenderer
{
    /**
     * @param string[] $sitemapFiles
     * @return string
     */
    public function buildIndex(array $sitemapFiles): string
    {
        $xml  = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
        $xml .= '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
        foreach ($sitemapFiles as $url) {
            $xml .= "<sitemap>\n<loc>" . $url . "</loc>\n";
            if ($this->config['sitemap']['sitemap_insert_lastmod'] === 'Y') {
                $xml .= '<lastmod>' . \date('Y-m-d') . '</lastmod>' . "\n";
            }
            $xml .= '</sitemap>' . "\n";
        }

        return $xml;
    }

    /**
     * @return string
     */
    public function buildHeader(): string
    {
        $xml  = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
        $xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"';

        if ($this->config['sitemap']['sitemap_googleimage_anzeigen'] === 'Y' ||
            $this->config['sitemap']['sitemap_images_categories'] === 'Y' ||
            $this->config['sitemap']['sitemap_images_manufacturers'] === 'Y' ||
            $this->config['sitemap']['sitemap_images_newscategory_items'] === 'Y' ||
            $this->config['sitemap']['sitemap_images_news_items'] === 'Y' ||
            $this->config['sitemap']['sitemap_images_attributes'] === 'Y'
        ) {
            $xml .= ' xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"';
        }

        $xml .= ' xmlns:xhtml="http://www.w3.org/1999/xhtml">' . "\n";

        return $xml;
    }

    /**
     * @return string
     */
    public function buildFooter(): string
    {
        return '</urlset>';
    }
}

Jeder andere sollte einfach auf die Behebung von JTL warten.
Liebe Grüße, Dennis Heinrich
 
  • Gefällt mir
Reaktionen: WACOR GmbH und JWittl

Ähnliche Themen