Как вы расширяете модуль карты сайта Django для создания более сложных карт сайта? - PullRequest
0 голосов
/ 17 ноября 2010

У меня есть поставщик, которому нужна карта сайта, которая содержит гораздо больше метаданных, чем то, что вы видели бы в обычной карте сайта поисковой системы.В результате я хотел бы найти аккуратный способ расширения модуля карты сайта django.Кто-нибудь делал это?Или вы можете предоставить этому django Noob код для этого?

Mike

1 Ответ

2 голосов
/ 17 ноября 2010

Если вы действительно хотите это сделать, вам нужно расширить django.contrib.sitemaps.Sitemap.get_urls, чтобы добавить дополнительную метаинформацию в словарь url_info. Текущий get_urls приведен ниже из django.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 относительно расширения протокола .

...