我有一个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
,所以/publications
位置的lastmod
/last_published_at
属性永远不会改变。对于搜索引擎来说,这难道不是错的吗?
一个非常麻烦的尝试可能是每次我触摸子条目时更新父页面的last_published_at
日期。
class PublicationPage(Page):
# ...
def save(self, *args, **kwargs):
result = super().save(*args, **kwargs)
from datetime import datetime
parent_page = self.get_parent()
parent_page.last_published_at = datetime.now()
parent_page.save()
return result
还有其他建议吗?
发布于 2019-02-11 08:36:03
您可以在页面模型上定义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
https://stackoverflow.com/questions/54626102
复制相似问题