2017-06-21 2 views
1

私はDagangoプロジェクトでwagtail appを使用しています。 dagangサイトマップ(https://docs.djangoproject.com/en/1.11/ref/contrib/sitemaps/)とwagtailサイトマップ(wagtail.contrib.wagtailsitemaps)を結合することは可能ですか? djangoのサイトマップインデックスを使ってみましたが、それはdjangoのサイトマップだけを分割して、どのようにwagtailのサイトマップを含めることができますか?wagtailとdjangoのサイトマップに参加するには?

答えて

2

Wagtailはバージョン1.10以降、Djangoサイトマップフレームワークを使用しています。これにより、通常のDjangoサイトマップとWagtailサイトマップを簡単に組み合わせることができます。

しかし、小さなキャッチがあります。 wagtailは複数のサイトをサポートしているため、サイトマップはサイトマップが生成されたサイトを知る必要があります。このため、wagtailは独自のサイトマップビュー(インデックスとサイトマップ)を提供します。これらのビューは、サイトオブジェクトを伝播するためにDjangoのサイトマップビューを拡張します。

ので、代わりのジャンゴからサイトマップビューをインポートする:

from django.contrib.sitemaps import views as sitemap_views 

使用セキレイのバージョン:

from wagtail.contrib.wagtailsitemaps import views as sitemaps_views 

そしてビューにURLをマッピングするためにDjangoのアプローチを使用します。

from wagtail.contrib.wagtailsitemaps import Sitemap 
urlpatterns = [ 
    # ... 
    url(r'^sitemap\.xml$', sitemaps_views.index, { 
     'sitemaps': { 
      'pages': Sitemap 
     }, 
     'sitemap_url_name': 'sitemap', 
    }), 
    url(r'^sitemap-(?P<section>.+)\.xml$', sitemaps_views.sitemap, 
     name='sitemap'), 
    # ... 
] 

完全な例については、テストコードを参照してください。

https://github.com/wagtail/wagtail/blob/911009473bc51e30ff751fda0ea5d2fa1d2b450f/wagtail/tests/urls.py#L36

関連する問題