getSearchablePages-HOOK: Google XML-Sitemap beim Generieren anpassen

von Marco Simbürger

Mit Contao kann für jeden Startpunkt einer Website eine Google XML-Sitemap erstellt werden. Die XML-Sitemap wird per Cronjob einmal am Tag automatisch neu aufgebaut. Vorausgesetzt, die Website wird auch von jemandem aufgerufen. Auch beim Speichern der Seite ("Startpunkt einer Website") wird die Sitemap neu generiert. Ausserdem kann man unter "Systemwartung" bei "Daten bereinigen" den Punkt "XML-Dateien neu schreiben" auswählen und damit die XML manuell neu generieren.

Was uns interessiert ist aber, wie man in die Erstellung dieser Sitemap eingreifen kann. Die Erstellung der Sitemap geschieht hier: Automator.php#L334  ...und selbstverständlich bietet Contao dafür einen HOOK an ;-) Der HOOK ist nur etwas unglücklich benannt. Der HOOK für diese Aufgabe lautet: getSearchablePages

Wie wir in der Dokumentation sehen, erhalten wir alle Seiten als Array und die ID des Startpunktes der Website. Wir können so also pro Seitenbaum etwas mit den Seiten-URLs anstellen.

config.php

$GLOBALS['TL_HOOKS']['getSearchablePages'][] = array('MyModuleClass', 'editSitemap');

MyModuleClass.php

public function editSitemap($arrPages, $intRoot)
{

	//Nur für Seitenbaum mit ID 2 ausführen
	if($intRoot == 2){

		$arrPages = str_replace('www.domain.ch', 'www.domain.com', $arrPages); //.ch durch .com ersetzen

	}	

	$this->log('Passed through HOOK editSitemap', __CLASS__.'::'.__FUNCTION__, TL_GENERAL); //Log schreiben

    return $arrPages;

}

Hier wird beim Seitembaum mit der ID 2 die Domain von .ch auf .com umgeschrieben.
(Ich hatte mal den Fall, dass eine Seite pro Sprache über eine andere Domain aufgerufen wurde. Mit .htaccess wurde dies entsprechend umgeleitet, aber Contao wusste dann natürlich nicht, dass die englische Seite mit .com aufgerufen wird. Daher wurde dann dieser kleine HOOK geschrieben, damit die Links in der XML-Sitemap auch passten)

Zurück

Kommentare

Einen Kommentar schreiben

Was ist die Summe aus 3 und 6?