사이트맵은 사용자나 소프트웨어를 통해 접근이 가능하다. 수많은 사이트들은 체계적인 뷰, 일반적으로 사이트의 계층적인 뷰를 표출하기 위해 사용자가 볼 수 있는 사이트맵을 보유하고 있다. 방문자가 특정 문서를 찾는데 도움을 주고 웹 크롤러에 의해 사용될 수도 있다.

검색 엔진과 기타 크롤러가 사용하는 경우 사이트 내 문서를 나열하는 XML 사이트맵이라는 구조화된 포맷이 있어서 상대적 중됴오와 업데이트 주기를 알 수 있다. 이는 robots.txt 파일로부터 지시되며 보통 sitemap.xml이라는 이름을 가진다.

한 번에 사이트 개요 내용을 볼 수 있도록 둘러보기 도움을 제공하는 역할을 하기도 한다.

 

https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A7%B5

 

사이트맵 - 위키백과, 우리 모두의 백과사전

구글이 정의한 XML 사이트맵 파일 프로토콜에 대해서는 사이트맵스 문서를 참고하십시오. 사이트맵(sitemap) 또는 사이트 맵(site map)은 도메인 내의 웹사이트의 페이지 목록이다. 사이트 맵에는 3가

ko.wikipedia.org

 

1. Settings/base.py

INSTALLED_APPS = [
	...
	'wagtail.contrib.sitemaps',
    	...
    	'django.contrib.sitemaps'
]

 

 

2. myproject/urls.py

...
from wagtail.contrib.sitemaps.views import sitemap
...


urlpatterns = [
	...
    path('sitemap.xml', sitemap),

]

http://127.0.0.1:8000/sitemaps.xml

 

 

 

 

3. models.py

class BlogListingPage(RoutablePageMixin, Page):
    
    template = "blog/blog_listing_page.html"
    
    custom_title = models.CharField(
        max_length=100, 
        blank=False,
        null=False,
        help_text="Overwrites the default title",
        )
    
    content_panels = Page.content_panels + [
        FieldPanel("custom_title"),
    ]

    def get_context(self, request, *args, **kwargs):
        context = super().get_context(request, *args, **kwargs)
        context['posts'] = BlogDetailPage.objects.live().public()         
        return context
    
    @route(r'^latest/$')
    def latest_blog_posts(self, request, *args, **kwargs):
        context = self.get_context(request, *args, **kwargs)
        context["posts"] = context["posts"][:1]
        return render(request, "blog/latest_posts.html", context)
    
    def get_sitemap_urls(self, request):
        # 사이트 맵을 사용하고 싶지 않을때는 return [] 을 해주면 된다.
        
        sitemap = super().get_sitemap_urls(request)
        sitemap.append(
            {
                "location": self.full_url + self.reverse_subpage("latest_blog_posts"),
                "lastmod": (self.last_published_at or self.latest_revision_created_at),
                "priority": 0.9,
            }
        )
        
        return sitemap

get_sitemap_urls 함수를 확인하면 된다. 일반적으로 Publish된 Page 모델들은 Sitemap이 잘 나타나지만 latest_blog_posts처럼 templates으로 render할 경우 Sitemap에 표시되지 않는다. 그럴경우 get_sitemap_urls로 직접 정의 해주면 된다. 

'Back-End > Wagtail, Django' 카테고리의 다른 글

Wagtail, Django Paginator  (0) 2021.11.21
Wagtail StructValue  (0) 2021.11.18
Wagtail 참고 사이트  (0) 2021.11.17
Wagtail git ignore setting  (0) 2021.11.16
Wagtail Routable Pages  (0) 2021.11.16

+ Recent posts