I created sitemap for my website in Django as below
sitemap
class MyModelSitemap(Sitemap):
changefreq = "daily"
priority = 0.5
def items(self):
return MyModel.objects.all()
def lastmod(self, obj):
return datetime.datetime.today()
urls.py
sitemaps = {
'mymodel': MyModelSitemap,
}
get_absolute_link()
is also implemented for MyModel
The problem there are many other URLs that uses MyModel
so it's not possible to have only one absolute_link
for it.
I need to provide many other URLs to sitemap depending on different queries of MyModel
.
How can I achieve this?
The easy way is to create additional sitemaps:
class MyModelAdditionalLinkSitemap(MyModelSitemap):
def location(self, obj):
return obj.get_additional_link()
urls.py
sitemaps = {
'mymodel': MyModelSitemap,
'mymodel2': MyModelAdditionalLinkSitemap
}
Added:
I you want to use just one Sitemap
class, try something like:
import itertools
class MyModelSitemap(Sitemap):
changefreq = "daily"
priority = 0.5
def items(self):
product = itertools.product(MyModel.objects.all(), xrange(2))
return list(product)
def location(self, obj):
if (obj[1] == 1):
return obj[0].get_additional_link()
return obj[0].get_absolute_link()
def lastmod(self, obj):
return datetime.datetime.today()