Modifikation der TYPO3 Extension mc_googlesitemap
Die Extension mc_googlesitemap ist der Quasi-Standard für die Erzeugung von XML-Sitemaps für Suchmachinen unter TYPO3. In der Version 0.4.2 (stable) kann sie über das TYPO3 Repository bezogen werden. Der Einsatz ist eigentlich unproblematisch. Allerdings sind mir zwei kleine "Glitches" aufgefallen:
- Wenn die Rootpage kein Shortcut ist (d.h. die Rootpage enthält bereits den Inhalt der Startseite), wird ein falscher Link für den Startseiteneintag in der Sitemap erzeugt.
("/" anstatt "http://domain.tld/") - Bei aktiviertem absRefPrefix wird zudem die Domain doppelt in die Links eingefügt
(z.B. "http://domain.tld/http://domain.tld/anypage/etc/")
Der erste Effekt...
... tritt nicht auf, wenn die Rootpage ein Shortcut zur eigentlichen Startseite ist. Dies ist aus verschiedenen Gründen der Standard bei vielen TYPO3-Installationen. Daher werden viele TYPO3-Nutzer den Fehler nie bemerken.
FIX: In der Datei class.tx_mcgooglesitemap_base.php muss in der Function "createElement" (ab Zeile 287) folgendes gepatched werden:
Aus
function createElement($array) {
$linea[]="\t
$linea[]="\t\t
$linea[]="\t\t
wird
function createElement($array) {
$linea[]="\t
if ($array['loc'] == "/") { $array['loc'] = "http://domain.tld/"; }
$linea[]="\t\t
$linea[]="\t\t
Natürlich muss dabei "domain.tld" durch die reale Domain ersetzt werden...
Der zweite Effekt...
... naja, was soll man sagen. Von der Verwendung von absRefPrefix wird seitens TYPO3 abgeraten. Der Einsatz ist auch in der Tat problematisch, da einige Extensions (so auch diese) damit nicht umgehen können, resp. nicht darauf vorbereitet sind. Allerdings bin ich mittlerweile ein Fan dieser Funktion. Warum das so ist, darauf gehe ich später noch mal ein.
FIX: In der Datei class.tx_mcgooglesitemap_base.php muss in Zeile 72 folgendes gepatched werden:
Aus
$this->baseUrl='http://'.$host.'/'.$path;
wird
$this->baseUrl=$path;
Hier wird also nur "'http://'.$host.'/'." entfernt. Damit fügt mc_googlesitemap das Domainprefix nicht mehr eigenständig hinzu, sondern dies wird absRefPrefix überlassen.


