Пользовательская трясогузка

Я пытаюсь создать собственную карту сайта Wagtail, которая включает в себя 'changefreq' и 'priority'. По умолчанию это просто 'lastmod' и 'url'.

Согласно документам Wagtail ( http://docs.wagtail.io /en/latest/reference/contrib/sitemaps.html ) вы можете перезаписать шаблон по умолчанию, создав карту сайта в /wagtailsitemaps/sitemap.xml

Я сделал это. Шаблон карты сайта выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% spaceless %}
{% for url in urlset %}
  <url>
    <loc>{{ url.location }}</loc>
    {% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}   </lastmod>{% endif %}
    {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
    {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
   </url>
{% endfor %}
{% endspaceless %}
</urlset>

Я добавил "wagtail.contrib.wagtailsitemaps" в мои УСТАНОВЛЕННЫЕ ПРИЛОЖЕНИЯ в настройках. Я изменил свой класс Page, чтобы включить функцию get_sitemap_urls, чтобы перезаписать его.

class BlockPage(Page):
author = models.CharField(max_length=255)
date = models.DateField("Post date")
body = StreamField([
    ('heading', blocks.CharBlock(classname='full title')),
    ('paragraph', blocks.RichTextBlock()),
    ('html', blocks.RawHTMLBlock()),
    ('image', ImageChooserBlock()),
])

search_fields = Page.search_fields + (
    index.SearchField('heading', partial_match=True),
    index.SearchField('paragraph', partial_match=True),
)

content_panels = Page.content_panels + [
    FieldPanel('author'),
    FieldPanel('date'),
    StreamFieldPanel('body'),
]

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

Это все еще не работает. Я что-то упустил? Документы по трясогузке не предоставляют больше информации, а другая документация по трясогузке в Интернете очень легкая. Любая помощь будет оценена.

4 голоса | спросил kbdev 17 J0000006Europe/Moscow 2016, 19:10:48

1 ответ


0
Я понял.У меня была функция в неправильном классе.Нужно было войти в каждый конкретный класс Page, чтобы отображаться в карте сайта, а не в общем классе BlockPage.Это также позволило мне установить различные приоритеты для каждой страницы, если это необходимо.Решение:
ответил kbdev 17 J0000006Europe/Moscow 2016, 22:06:34

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132