自定义Wagtail Sitemap

时间:2016-06-17 16:10:49

标签: django sitemap wagtail

我正在尝试创建一个包含“changefreq”和“priority”的自定义Wagtail站点地图。默认值只是'lastmod'和'url'。

根据Wagtail文档(upvar),您可以通过在/wagtailsitemaps/sitemap.xml创建站点地图来覆盖默认模板

我做到了这一点。站点地图模板如下所示:

string trimleft $varRef \$

我在设置中添加了“wagtail.contrib.wagtailsitemaps”到我的安装应用程序。我修改了我的Page类以包含get_sitemap_urls函数,试图覆盖它。

proc bump varName {
    upvar 1 $varName var
    incr var
}
set x 10
# => 10
bump x
set x
# => 11

它仍然无效。我错过了别的什么吗? Wagtail文档不提供任何更多信息和Wagtail网上的其他文档非常轻松。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:5)

我明白了。我在错误的班级里有这个功能。它需要在每个特定的Page类中显示在站点地图中,而不是在常规的BlockPage类中。如果需要,这也允许我为每个页面设置不同的优先级。

解决方案:

class HomePage(Page):
    body = RichTextField(blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('body', classname='full')
    ]

    def get_sitemap_urls(self):
        return [
            {
                'location': self.full_url,
                'lastmod': self.latest_revision_created_at,
                'changefreq': 'monthly',
                'priority': 1
            }
        ]

class AboutPage(Page):
    body = RichTextField(blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('body', classname='full')
    ]

    def get_sitemap_urls(self):
        return [
            {
                'location': self.full_url,
                'lastmod': self.latest_revision_created_at,
                'changefreq': 'monthly',
                'priority': .5
            }
        ]