qTranslate: Anpassungen für Google XML Sitemaps

Plugins, WordPress
5. Dezember 2009

Google XML Sitemaps modifiziert für qTranslate

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.

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;
	}
Plugins, WordPress
5. Dezember 2009

Kommentar schreiben