Google Sitemap für Joomla! Systeme automatisch erzeugen

  • Sie haben eine eigene WeSite, welche mit Joomla! realisiert wurde und möchten gern automatisiert die entsprechenden Google Sitemaps und der zugehörigen Sitemapindex Datei erstellen? Nachfolgend finden Sie ein einfaches PHP Skript, welches Sie auf Ihrem Server ablegen können und als Cronjob einrichten können. Das Script erzeugt automatisch alle gewünschten Sitemap Dateien, nummeriert diese und erstellt am Ende die entsprechende Index-Datei. Sie müssen dann nur noch diese Index-Datei (sitemapindex.xml) bei Google entsprechend bekannt machen. <pre><?<br />$path = "/www";$xml_path = "/www/htdocs";include($path."/database.inc.php");// maximal 10.000 Links pro XML $max_entry = 10000;$eintraege = 0;$filecount = 1;function write_xml_file($content,$filecount) {global $xml_path,$filecount,$eintraege,$content;$xml_header = "<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.google.com/schemas/sitemap/0.84"><url><loc>http://www.pc-special.net/</loc><lastmod>".date("Y-m-d")."T".date("H:i:s")."+01:00</lastmod> <changefreq>weekly</changefreq> <priority>1</priority> </url> "; $xml_footer = "</urlset>"; $content = $xml_header.utf8_encode($content).$xml_footer; //File anlegen und speichern $filename = $xml_path."/sitemap_".$filecount.".xml"; $file = fopen($filename,"w+"); fputs($file,$content); fclose($file); clearstatcache(); //reinit $content = ''; $filecount++; $eintraege = 0;}////////////////////* ARTIKEL */////////////////////$sql = "SELECT id, sectionid, title, state, created, modified FROM jos_content WHERE state = 1 ";$result = mysql_query($sql,$mysql_id);while ($r = mysql_fetch_array($result, MYSQL_ASSOC)) { //reset $eintraege++; $id = $r[id]; $modified = $r[modified]; $content .= "<url> <loc>http://www.pc-special.net/index.php?option=com_content&task=view&id=$id</loc> <lastmod>".date("Y-m-d")."T".date("H:i:s")."+01:00</lastmod> <changefreq>weekly</changefreq> </url> "; if ($eintraege == $max_entry) { write_xml_file($content,$filecount); }}////////////////////* RD GLOSSARY Einträge*/////////////////////$sql = "SELECT id, term FROM jos_rd_glossary WHERE published = 1 ";$result = mysql_query($sql,$mysql_id);while ($r = mysql_fetch_array($result, MYSQL_ASSOC)) { //reset $eintraege++; $id = $r[id]; $content .= "<url> <loc>http://www.pc-special.net/index.php?option=com_rd_glossary&task=view&id=$id</loc> <lastmod>".date("Y-m-d")."T".date("H:i:s")."+01:00</lastmod><changefreq>weekly</changefreq> </url> "; if ($eintraege == $max_entry) { write_xml_file($content,$filecount); }}////////////////////* Hauptprogramm */////////////////////write_xml_file($content,$filecount);//Sitemap IndexFile schreiben$i = 1;$sitemap_content = "<?xml version="1.0" encoding="UTF-8"?> <sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">";while ($i < $filecount) { $sitemap_content .= " <sitemap> <loc>http://www.pc-special.net/sitemap_$i.xml</loc> <lastmod>".date("Y-m-d")."T".date("H:i:s")."+01:00</lastmod> </sitemap>"; $i++;}$sitemap_content .= "</sitemapindex>";$filename = $xml_path."/sitemapindex.xml";$file = fopen($filename,"w+");fputs($file,$sitemap_content);fclose($file);clearstatcache();?></pre>

    Das Script dann einfach 1 x die Woche laufen lassen und fertig. Falls Sie weitere Module einsetzen, welche Content zur Verfügung stellen, brauchen Sie nur z.B. die Artikel Sektion zu kopieren und entsprechend anzupassen. Haben Sie weitere Codezeilen erfolgreich geschrieben, können Sie diese gern hier als Kommentar veröffentlichen. http://www.google.de/webmasters/sitemap - zum Google Sitemap Dienst