
qTranslate versieht auf Wunsch die diversen Beiträge für jede Sprache mit einem eigenen URL-Zusatz (zum Beispiel meineurl.de/en/beitrag). Leider werden die zusätzlichen fremdsprachigen Seiten nicht automatisch in der durch das Plugin „Google XML Sitemaps“ erstellten Datei „sitmap.xml“ eingefügt.
Folglich hilft nur eine Ergänzung im Quellcode von Google XML Sitemaps, welche die Links zu den fremdsprachigen Beiträgen automatisch in die “sitemap.xml” einfügt.
Diese Lösung gilt für die Version 3.2.2 von Google XML Sitemaps.

qTranslate provides on request the various contributions for each language with its own URL suffix (for example, meineurl.de/en/contribution). Unfortunately, the additional foreign language versions are not automatically added in the created file “sitmap.xml” through the plugin Google XML Sitemaps.
Consequently, only a supplement in the source code of Google XML Sitemaps helps to add the post URLs of the foreign versions to the “sitemap.xml”.
This solution applies to version 3.2.2 of Google XML Sitemaps.
Bei dieser Lösung wird für jeden zusätzlich gewünschten Sitemap-Eintrag ein weiterer Link mit der entsprechenden Sprachkennung eingefügt. Dazu ergänzt man im Plugin-Verzeichnis „wp-content/plugins/google-sitemap-generator“ bei der Datei “sitemap-core.php” die “function Render()” (ab Zeile 395) mit dem hier angeführten Programm-Code zwischen den Kommentaren. Wie im Beispiel ersichtlich, wird der entsprechende Teil Zeile 413 bis 422 für mehrere Sprachen entsprechend wiederholt eingefügt. Dazu das in Zeile 414 verwendete Sprachenkürzel (hier: “/en”) auf die verwendeten Sprachen abstimmen.
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 | function Render() { if($this->_url == "/" || empty($this->_url)) return ''; $r=""; $r.= "\t<url>\n"; $r.= "\t\t<loc>" . $this->EscapeXML($this->_url) . "</loc>\n"; if($this->_lastMod>0) $r.= "\t\t<lastmod>" . date('Y-m-d\TH:i:s+00:00',$this->_lastMod) . "</lastmod>\n"; if(!empty($this->_changeFreq)) $r.= "\t\t<changefreq>" . $this->_changeFreq . "</changefreq>\n"; if($this->_priority!==false && $this->_priority!=="") $r.= "\t\t<priority>" . number_format($this->_priority,1) . "</priority>\n"; $r.= "\t</url>\n"; /* AENDERUNG */ if(function_exists('qtrans_getLanguage')) { $output_url = $this->EscapeXML($this->_url); $blog_url = get_bloginfo('url'); $rest_url = explode($blog_url,$output_url); /* den folgenden Teil für jede gewaehlte Sprache wiederholen */ $output_url = $blog_url . "/en" . $rest_url[1]; $r.= "\t<url>\n"; $r.= "\t\t<loc>" . $output_url . "</loc>\n"; if($this->_lastMod>0) $r.= "\t\t<lastmod>" . date('Y-m-d\TH:i:s+00:00',$this->_lastMod) . "</lastmod>\n"; if(!empty($this->_changeFreq)) $r.= "\t\t<changefreq>" . $this->_changeFreq . "</changefreq>\n"; if($this->_priority!==false && $this->_priority!=="") $r.= "\t\t <priority>" . number_format($this->_priority,1) . "</priority>\n"; $r.= "\t</url>\n"; /* Ende für EINEN eventuell zu wiederholdenden Teil */ } /* AENDERUNG ENDE */ return $r; } |
With this solution a link with the appropriate language code is added for each additional desired sitemap entry. In the plugin directory “wp-content/plugins/google-sitemap-generator” at the file “sitemap-core.php” the “function Render ()” (from line 395) has to be expanded with the here-mentioned program code between the comments. As shown in the example, the corresponding inserted part (line 413 to 422) has to be repeated for multiple languages. In addition change the language abbreviations used in line 414 (here: “/en”) for the needed languages.
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 | function Render() { if($this->_url == "/" || empty($this->_url)) return ''; $r=""; $r.= "\t<url>\n"; $r.= "\t\t<loc>" . $this->EscapeXML($this->_url) . "</loc>\n"; if($this->_lastMod>0) $r.= "\t\t<lastmod>" . date('Y-m-d\TH:i:s+00:00',$this->_lastMod) . "</lastmod>\n"; if(!empty($this->_changeFreq)) $r.= "\t\t<changefreq>" . $this->_changeFreq . "</changefreq>\n"; if($this->_priority!==false && $this->_priority!=="") $r.= "\t\t <priority>" . number_format($this->_priority,1) . "</priority>\n"; $r.= "\t</url>\n"; /* AENDERUNG */ if(function_exists('qtrans_getLanguage')) { $output_url = $this->EscapeXML($this->_url); $blog_url = get_bloginfo('url'); $rest_url = explode($blog_url,$output_url); /* den folgenden Teil für jede gewaehlte Sprache wiederholen */ $output_url = $blog_url . "/en" . $rest_url[1]; $r.= "\t<url>\n"; $r.= "\t\t<loc>" . $output_url . "</loc>\n"; if($this->_lastMod>0) $r.= "\t\t<lastmod>" . date('Y-m-d\TH:i:s+00:00',$this->_lastMod) . "</lastmod>\n"; if(!empty($this->_changeFreq)) $r.= "\t\t<changefreq>" . $this->_changeFreq . "</changefreq>\n"; if($this->_priority!==false && $this->_priority!=="") $r.= "\t\t <priority>" . number_format($this->_priority,1) . "</priority>\n"; $r.= "\t</url>\n"; /* Ende für EINEN eventuell zu wiederholdenden Teil */ } /* AENDERUNG ENDE */ return $r; } |
Hallo,vielen Dank für den Code, läuft wunderbar
Wichtiger Hinweis, hab ewig gebraucht, bis ich gecheckt hab, dass der englische Cod von dir falsch ist!!!Du musst bei dir mal den Code auf der englischen Veröffentlichung ansehen, da passt was nicht, da wurden die Pfeile ersetzt und der Code ist nicht lauffähig!GrußChristian
Danke dir vielmals und tut mir leid, dass ich die falsche Codierung nicht bemerkt habe. Mittlerweile habe ich die englische Version korrigiert.
LG aus Linz
Michael
[...] Änderungen zur Aufnahme der englischsprachigen Beiträge und Seiten sind in dem Beitrag qTranslate: Anpassungen für Google XML Sitemaps ausführlich [...]