models に入っていない Index ページを sitemap.xml に組み込む方法。 前から肝心のトップページが sitemap.xml に入っていなかったのが気になっていたので、入れてみました。 IndexSitemap クラスを作成し get_urls メソッドで sitemap.xml の種になる dict を list で返す ようにします。
michilu.urls
from django.conf.urls.defaults import *
from michilu.sitemaps import sitemaps
urlpatterns = patterns("",)
urlpatterns += patterns('',
(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap',{'sitemaps': sitemaps}),
)
michilu.sitemaps
from django.contrib.sitemaps import GenericSitemap
from michilu.blog.models import Entry
from datetime import datetime
info_dict = {
"queryset": Entry.objects.all(),
"date_field": "last_mod",
}
class IndexSitemap(object):
def get_urls(self):
return [{
'location': "http://michilu.com/",
'lastmod': datetime.now(),
'changefreq': "hourly",
'priority': 0.7 ,
}]
sitemaps = {
"blog": GenericSitemap(info_dict, priority=0.6),
"index": IndexSitemap(),
}
http://michilu.com/sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>http://michilu.com/blog/posts/1/</loc><lastmod>2007-01-17</lastmod><priority>0.6</priority></url>
...
<url><loc>http://michilu.com/</loc><lastmod>2007-04-25</lastmod><changefreq>hourly</changefreq><priority>0.7</priority></url>
</urlset>
