我有一个PublicationsPage
和一个PublicationPage
班。
PublicationsPage
显示其直接子级的列表,并在http://mysite/publications
的简短预览列表中呈现它们。
class PublicationsPage(Page):
# ...
def get_context(self, request):
context = super().get_context(request)
publications = PublicationPage.objects.child_of(self).live()
context['publications'] = publications
return context
这意味着每当添加/删除/修改新的PublicationPage
时,列表就会相应更新。但是由于我没有更新PublicationsPage
位置的lastmod
/ last_published_at
属性,所以永远不会改变。这对搜索引擎会不会引起误导?
真正的骇人听闻的尝试可能是每次我触摸子项时都更新父页面的/publications
日期。
last_published_at
还有其他建议吗?
答案 0 :(得分:1)
生成sitemap时,您可以设置属性lastmod
,该属性接受一种针对站点地图中每个项目调用的方法。
因此,在生成PublicationsPage
站点地图时,请将该属性设置为一种查询每个PublicationsPage
项目的所有子项并返回最新日期的方法。
答案 1 :(得分:1)
您可以在Page模型上定义get_sitemap_urls
,如下所示:
class PublicationsPage(Page):
def get_sitemap_urls(self, request=None):
# Get the defaults sitemap URLS.
urls = super().get_sitemap_urls(request=request)
# Get the last modifications time of your publications.
publications = PublicationPage.objects.child_of(self).live()
last_publication = publications.order_by('-last_published_at').first()
# Update the default entry.
if last_publication:
urls[0]['lastmod'] = last_publication.last_published_at
# Return the urls.
return urls