XML-Sitemap for Google

Hallo
zum Erstellen, der XLM-Sitemap wurde google_sitemap_xml.php verwendet. Nach der Umstellung auf PHP 7.2 funktioniert das Skript leider nicht mehr. Eine neue Version von google_sitemap_xml.php läuft auch mit PHP 7.2, allerdings wird für alle Seiten bzw. Artikel immer das aktuelle Datum/Zeitpunkt in die XML-Datei geschrieben und nicht wann die Änderung tatsächlich erfolgt ist.

In der neuen Datei wurde

'lastmod' => date("Y-m-d") . 'T' . date("h:i:s") . '+00:00',

geändert in

'lastmod' => date(DateTime::ATOM),

Deshalb habe ich “date(DateTime::ATOM)” wieder geändert in “date(“Y-m-d”) . ‘T’ . date(“h:i:s”) . ‘+00:00’”.
Leider ändert sich in der XML-Datei nach erneutem ausführen nichts. Kann mir jemand bei der Problemlösung helfen?

Dann darfst kein Datum generieren, sondern einen Timestamp vom Artikel hier einfügen. Soweit ich mich erinnere, war das in dem Skript aber auch drin.

Hallo,
danke für die Rückmeldung!

Ja, ich hatte die falschen Stellen geändert :slightly_frowning_face: In dem alten Skript wurde in der Funktion “function getProducts($limit)” auch das tatsächliche Datum ausgelesen. Deshalb habe ich in dem neuen Skrip die foreach in der Funktion wie folgt angepasst:

foreach ($dbh->query($sql) as $row) {

    $lastmod = $row['oxtimestamp'];
    if ("0000-00-00 00:00:00" == $lastmod)
    {
        $lastmod = date("Y-m-d") . 'T' . date("h:i:s") . '+00:00';
    }
    else
    {
        $lastmod = $lastmod = str_replace(" ", "T", $lastmod) . '+00:00';
    }

    $list[] = [
        'loc'        => $mod_cnf['siteurl'] . $row['oxseourl'],
        'priority'   => '1.0',
        'lastmod'    => $lastmod,
        //'lastmod'    => date(DateTime::ATOM),
        'changefreq' => 'daily',
    ];
}

Jetzt wird die XML-Datei wieder mit dem korrekten Datum/Zeitpunkt erstellt

War es evtl. Absicht, immer das aktuelle und nicht das tatsächliche Datum zu verwenden, um für ein besseres Suchergebnis bei Google zu erreichen?

Ich denke, das wird nur gemacht um überhaupt ein Datum statt 0 auszugeben:

Ja, das kann schon sein, aber “$lastmod = $row[‘oxtimestamp’];” entspricht doch dem tatsächlichen Änderungsdatum!?

Jo, wenn Du das Einstellungsdatum willst, musst oxinsert abrufen.

Hi,

danke für die Rückmeldung.

Ich dachte “oxtimestamp” wäre das Einstellungs- bzw. Änderungsdatum. Welche Angabe ist denn für die Sitemap bzw. Google am sinnvollsten?

Nein, oxinsert ist das Einstellungsdatum und oxtimestamp hält die letzte Aktualisierung fest.
Du kannst es ändern, aber es sollte imho so bleiben, weil google bei Änderung des Datums die Seite neu crawlt. Insert bleibt für gewöhnlich ja immer gleich.

Hallo,

vielen Dank für die Info, das Problem ist damit gelöst! :slightly_smiling_face: