Die Google-Sitemap ist eine XML-Datei, die über den Änderungsstatus und die relative inhaltliche Bedeutung (Priorität) Auskunft gibt.
Für den statischen Export oder auch die direkte Erzeugung einer performance-sparenden statischen Google-Sitemap empfiehlt sich die explitzite, d.h. redaktionell definierte Erzeugung der XML-Datei. Die Methode sitemapxml erzeugt ein entsprechendes Zope-Fileobjekt im common-Folder. Durch einfache Code-Anpassung kann das Fileobjekt natürlich auch an anderen Stellen im Objektbaum platziert werden. Um PAGE-Objekten einen Prioritätswert zuordnen zu können, ist die Einführung eines zusätzlichen Meta-Attributes attr_bot_priority erforderlich:
Die DTML-Methode generiert den Google-konformen Datenstrom als REQUEST-Variable und gibt diese dann als Fileobjekt aus:
<dtml-call f_standard_html_request> <!-- Generating sitemap.xml as a REQUEST variable --> <dtml-call "REQUEST.set('sitemapxml','')"> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'<?xml version='+QUOT+'1.0'+QUOT+' encoding='+QUOT+'UTF-8'+QUOT+'?>')"> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n<urlset')"> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n xmlns='+QUOT+'http://www.google.com/schemas/sitemap/0.84'+QUOT)"> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n xmlns:xsi='+QUOT+ 'http://www.w3.org/2001/XMLSchema-instance'+QUOT)"> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n xsi:schemaLocation='+QUOT+'http://www.google.com/schemas/sitemap/0.84')"> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n http://www.google.com/schemas/sitemap/0.84/sitemap.xsd'+QUOT+'>')"> <dtml-in "getLanguages(REQUEST)"> <dtml-call "REQUEST.set('lang',_['sequence-item'])"> <dtml-with "content"> <dtml-call "REQUEST.set('obs',[this()])"> <dtml-call "obs.extend(filteredTreeNodes(REQUEST,PAGES,max_len=None))"> <dtml-in obs> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n <url>')"> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n <loc>http://'+getConfProperty('ASP.ip_or_domain')+_.string.split(_.string.split(getHref2IndexHtml(REQUEST),'content')[1],'?preview')[0]+'</loc>')"> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n <lastmod>'+getLangFmtDate(getObjProperty('change_dt',REQUEST),'eng','%Y-%m-%d')+'</lastmod>')"> <dtml-if "getObjProperty('attr_bot_priority',REQUEST)"> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n <priority>'+getObjProperty('attr_bot_priority',REQUEST)+'</priority>')"> <dtml-else> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n <priority>0.5</priority>')"> </dtml-if> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n </url>')"> </dtml-in> </dtml-with> </dtml-in> <dtml-call "REQUEST.set('sitemapxml',sitemapxml+'\n</urlset>')"> <!-- writing index into a file --> <dtml-with "common"> <dtml-try> <dtml-call "manage_addFile('sitemap.xml',title='SITEMAP',content_type='text/xml')"> <dtml-except> </dtml-try> <dtml-with "_['sitemap.xml']"> <dtml-call "manage_edit(title='SITEMAP', content_type='text/xml',precondition='', filedata=sitemapxml)"> </dtml-with> </dtml-with> <dtml-call expr="REQUEST.set('message','<a href='+QUOT+'../common/sitemap.xml'+QUOT+' target='+QUOT+'_blank'+QUOT+'>../common/sitemap.xml</a> successfully generated')"> <dtml-return message>