Google Sitemap Xml - Einfach zu Erstellen

Hallo,

ich erhalte leider folgenden Fehler wenn ich die URL http://www.youroxideshop.com/google_sitemap_xml.php aufrufe

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting T_STRING or T_VARIABLE or '{' or '$' in /www/htdocs/w00ff1c1/google_sitemap_xml.php on line 60

Line 60 sieht so aus:


$mod_cnf['siteurl']             = $shopConfig->'http://www.meineseite.de/';	// shop url (with ending slash!)

Was ist da falsch?

Du darfst da nicht Deine URL eintragen. das Script holt sich die werte aus der config.inc

Ok, super. Nachdem ich die File jetzt ohne Änderungen hochgeladen habe, hat es funktioniert, klasse.

Zwei Fragen hätte ich dazu noch:

  1. Ich finde die Datei sitemap1.xml nicht im Root Verzeichnis des Shops obgleich ich sie aufrufen kann, wie kann das sein?
  2. Werden Updates des Shops automatisch in die Sitemap geschrieben oder muss man nachdem man z.B. neue Produkte eingestellt hat / neue Kategorien angelegt hat manuell eine neue Sitemap generieren?

Vielen Dank schon mal!

Am besten das Script per Cronjob zBsp. täglich um 20.00Uhr ausführen lassen. Oder dann halt manuell. Für nen Cronjob gibst glaube ich einen speziellen Dateiaufruf. …

LG Pasquale

via TapaTalk

sitemap1.xml und eine sitemap.xml ist jetzt doch vorhanden, sorry.

Was ein CronJob ist weiß ich leider nicht, aber wenn es manuell zu machen ist, ist das auch ok. Dann macht man das eben ab und zu. Reicht mir für den Anfang.

Danke für die schnelle Antwort!

Moin Moin!

Kann es sein, dass in der configuration rein gar nichts eingefügt werden muss.
Habe das .php File direkt so hochgeladen, aufgerufen - scheint einwandfrei zu funktionieren.

Jetzt würde mich ja “nur” noch stark interessieren, wie man eine Bildersitemap dort mit integriert bekommt! Jemand eine Idee?

Beste Grüße
Tobias

Bei mir geht gar nichts.:confused:

Wenn ich die Daten eintrage, kommt die meldung keine Verbindung zur Datenbank. Die Einträge waren aber richtig.

So, ich habe das nun auch erst zum laufen gebracht. Ich musste erst eine leere Datei namens sitemap1.xml und sitemap.xml erstellen, Die dann auf 777 stellen.

Ging wunderbar. Nun heute geht es leider nicht mehr.
Ich habe allerdings gestern in der htaccess eine umleitung auf www eingebaut.
Kann das damit zusammenhängen?

Ich erhalte folgende Hinweise im Log. Wie kann ich diese korrigieren? Die sitemaps werden korrekt erstellt.

18-Feb-2016 12:05:07 E :: PHP Warning

Fehlermeldung:

mysql_free_result() expects parameter 1 to be resource, boolean given in /is/htdocs.../shop/google_sitemap_xml.php on line 517

18-Feb-2016 12:05:07 E :: PHP Warning

Fehlermeldung:

mysql_fetch_array() expects parameter 1 to be resource, boolean given in /is/htdocs.../shop/google_sitemap_xml.php on line 499

18-Feb-2016 12:05:07 E :: PHP Deprecated

Fehlermeldung:

mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /is/htdocs/wp1123619_6DNYJODCA0.../shop/google_sitemap_xml.php on line 104

18-Feb-2016 12:05:07 E :: PHP Notice

Fehlermeldung:

Undefined offset: 1 in /is/htdocs/wp1123619_6DNYJODCA0/.../shop/google_sitemap_xml.php on line 88

Habe das Script auch im Einsatz. Nur hätte ich gerne, dass nur Artikel in der Sitemap auftauchen die auch verfügbar sind. Bei mir werden alle Artikel gelistet, also auch die ausverkauften. Wäre für Hilfe sehr dankbar. oxid ver. 4.9.4

habs grad selbst gefunden…

function getProducts($limit)
{
global $mod_cnf;
$list = array();
// calculate offset
$start = $mod_cnf[‘offset’];
if (1 == $limit)
{
$end = 0;
}
else {
$end = (($limit-1) * $mod_cnf[‘offset’]) - 1;
}

$sql = "SELECT
            oxart.oxtimestamp,
            seo.oxseourl
        FROM
            oxarticles as oxart
        LEFT JOIN oxobject2category as oxobj2cat
            ON (oxobj2cat.oxobjectid = oxart.oxid)
        LEFT JOIN oxcategories as oxcat
            ON (oxcat.oxid = oxobj2cat.oxcatnid)
        LEFT JOIN oxseo as seo
            ON (oxart.oxid = seo.oxobjectid)
        WHERE
            oxart.oxactive = 1 AND

oxart.oxvarstock > 0 AND
oxcat.oxactive = 1 AND
oxcat.oxhidden = 0 AND
seo.oxlang = “.$mod_cnf[‘language’].” AND
seo.oxtype=‘oxarticle’ AND
".($mod_cnf[‘expired’] == true ? ‘’: ‘seo.oxexpired = 0 AND ‘)."
seo.oxstdurl LIKE (’%cnid=%’)
GROUP BY
oxart.oxid
LIMIT “.$start.” OFFSET “.$end.”;";

die rote Zeile einfach einfügen. Fragt die Gesamtzahl der Variantenartikel ab. Falls ihr Varianten habt. Sorry falls das schon weiter vorne stand.

Hallo zusammen,

ich stelle euch gerne unseren XML-Sitemap Modul.
Mehr Informationen dazu finden Sie unter XML-Sitemap.

XML-Sitemap Modul von uns hat viele Einstellungsmöglichkeiten und kann selbstverständlich leicht an die Bedürfnisse Angepasst werden.

Mit freundlichen Grüßen
Jozef Nano

Eben damit die sitemap1.xml für 3 Sprachen erstellen lassen: https://github.com/OXIDprojects/google_sitemap

Als Ergebnis bekam ich für Sprache:
-> “0”: 488,3 kB oder 2284 Zeilen = Standardsprache
-> “1”: 886,5 kB oder 4002 Zeilen
-> “2”: 1 MB oder 4701 Zeilen

Warum ist die Sitemap in Sprache “2” am ausführlichsten während bei Sprachen 1 und 0 Artikellinks fehlen?

In obiger Datei wurde nur $mod_cnf[‘language’] editiert.

Danke.

gehe mal davon aus, dass noch ‘Müll’ in der oxseo ist.
Die Datenbankabfrage in dem Script ist auch nicht so geschickt. Eigentlich gehört dort eine Unterabfrage rein.
Als Reparatur kannst Du die seo-Tabelle neu anlegen. Du mußt aber dann den Shop im Frontend komplett durcharbeiten, da die seo-tabelle erst z.B. bei einer übergeordneten Kategorie gefüllt wird.

[QUOTE=patchwork.de;186252]gehe mal davon aus, dass noch ‘Müll’ in der oxseo ist.
Die Datenbankabfrage in dem Script ist auch nicht so geschickt. Eigentlich gehört dort eine Unterabfrage rein.
Als Reparatur kannst Du die seo-Tabelle neu anlegen. Du mußt aber dann den Shop im Frontend komplett durcharbeiten, da die seo-tabelle erst z.B. bei einer übergeordneten Kategorie gefüllt wird.[/QUOTE]

Danke.
Die sitemap genauer angesehen und in darin ist tatstächlich “Zeuch was net” da sein braucht.

Wenn ich die oxseo via phpmyadmin leere, was ist dann mit oxseohistory?
Die oxident wird doch zufällig angelegt. Damit sind dann auch die oxseohistory-Verknüpfungen History. Oder irre ich mich?

die oxseohistory NICHT leeren. Wenn da Müll drin ist -> macht nix - wenn geleert -> viele 404s
die oxident sind nicht zufällig sondern die MD5 gehashte aktuelle seourl (warum md5 gehasht habe ich nie verstanden - wahrscheinlich um Platz zu sparen)

Grundsätzlich meine ich aber, dass die sql-Abfrage unvollständig ist. Sollte so sein:

SELECT oxart.oxtimestamp, oxseourl
FROM oxseo AS seo
LEFT JOIN oxarticles AS oxart ON ( oxart.oxid = seo.oxobjectid )
LEFT JOIN oxobject2category AS oxobj2cat ON ( oxobj2cat.oxobjectid = oxart.oxid )
LEFT JOIN oxcategories AS oxcat ON ( oxcat.oxid = oxobj2cat.oxcatnid )
WHERE oxart.oxactive =1
AND oxcat.oxactive =1
AND oxcat.oxhidden =0
AND seo.oxlang =“.$mod_cnf[‘language’].”
AND seo.oxtype = ‘oxarticle’
AND “.($mod_cnf[‘expired’] == true ? ‘’: 'seo.oxexpired = 0 AND ').”
seo.oxstdurl LIKE (‘%cnid=%’)
GROUP BY seo.oxseourl
LIMIT “.$start.” OFFSET “.$end.”;";

in der Originalversion wird nach oxart.oxid gruppiert -> liefert nur eine zufällige seourl

Ich hab das Script auch im Einsatz, jedoch ist es mir noch nicht gelungen Lieferanten aus dem Index zu nehmen. In den Einstellungen hab ich die Lieferanten deaktiviert. In der Sitemap werden diese jedoch noch angezeigt.

Kann das jemand nachvollziehen?

Du mußt diese zwei Zeilen auf false setzen

$mod_cnf[‘export_products_ve’] = false; // export vendor products?
$mod_cnf[‘export_vendor’] = false; // export vendors?

Die Einstellungen hatte ich gesetzt. Jetzt nach dem Leeren der “oxseo” tauchen keine Lieferanten mehr auf. Die Änderungen oben von Dir patchwork habe ich übernommen. Nun beobachte ich mal.

Danke für die Aufklärung.

Das ist ganz schön mühselig und eine zeitraubende Angelegenheit.
Einzig positive, dass man ihr abgewinnen kann ist, man schaut sich die Produkttitel erneut an und nutzt es zur “Fehlerbehebung”.

Magst du das auf Github stellen?
Oder besser: Magst du das bitte auf Github stellen! :slight_smile:
Also mehr eine Aufforderung :smiley: