如何扩展Django的站点地图模块以创建更复杂的站点地图?

时间:2010-11-17 12:14:20

标签: python django sitemap

我有一家供应商想要一个包含比您在普通搜索引擎站点地图中看到的更多元数据的站点地图。因此,我想找到一个扩展django的站点地图模块的整洁方法。有没有人这样做过?或者你能为这个django Noob提供代码吗?

麦克

1 个答案:

答案 0 :(得分:2)

如果您真的想要这样做,则需要扩展django.contrib.sitemaps.Sitemap.get_urls以将其他元信息添加到url_info字典中。当前get_urlsdjango.contrib.sitemaps

下面给出
def get_urls(self, page=1, site=None):
    if site is None:
        if Site._meta.installed:
            try:
                site = Site.objects.get_current()
            except Site.DoesNotExist:
                pass
        if site is None:
            raise ImproperlyConfigured("In order to use Sitemaps you must either use the sites framework or pass in a Site or RequestSite object in your view code.")

    urls = []
    for item in self.paginator.page(page).object_list:
        loc = "http://%s%s" % (site.domain, self.__get('location', item))
        priority = self.__get('priority', item, None)
        url_info = {
            'location':   loc,
            'lastmod':    self.__get('lastmod', item, None),
            'changefreq': self.__get('changefreq', item, None),
            'priority':   str(priority is not None and priority or '')
        }
        urls.append(url_info)
    return urls

之后,您需要更改django/contrib/sitemaps/templates/sitemap.xml以在站点地图中包含您的额外信息。如果您要添加额外的元信息,则与Django无关,您应该在sitemaps.org协议部分阅读extending the protocol