Ich habe mich in den letzten Tagen ein wenig mit Googles Sitemaps beschäftigt und wie man diese am besten automatisch generiert. Nachdem bereits DokuWiki am Wochenende einen Sitemap Generator spendiert bekam, habe ich heute mal untersucht wie man das Ganze in Formel realisieren kann.
Tatsächlich ist es sehr einfach: Einfach eine neue HTML Datei direkt im „Site“ Verzeichnis anlegen. Es ist wichtig, dass die Datei ganz oben liegt sonst akzeptiert Google die Sitemap nicht. Auch die html Endung ist wichtig, sonst jagt Formel den Code nicht durch den Markup Prozessor. Nach dem Anlegen einfach die „Dokumenteninformationen“ aufrufen und dort „Content-Type: festlegen“ auswählen und „text/xml“ eintragen.
Dann kann das Dokument im Plain-Text Modus wie folgt editiert werden:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<EXEC><!--
var base = "http://www.cosmocode.de";
var start = "/de";
var sdf = new Packages.java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
var query = new Packages.com.cosmocode.cms.rep.Query();
query.setRoot( path.parse(start) );
query.setName( ".html" );
var list = rep.search(repSession,query);
for(var i=0; i<list.size(); i++){
var dt = sdf.format(list.get(i).getLastMod());
dt = dt.substr(0,22)+":"+dt.substr(22,2);
out.write(" <url>\n");
out.write(" <loc>"+base+list.get(i).getPath()+"</loc>\n");
out.write(" <lastmod>"+dt+"</lastmod>\n");
out.write(" </url>\n");
}
-
→</EXEC>
</urlset>
Die Variablen „start“ und „base“ muessen natürlich seitenspezifisch angepasst werden. Nicht vergessen die Sitemap auch bei Google anzumelden 