(custom_page_listings)= # 사용자 정의 페이지 목록 일반적으로 편집자는 페이지 트리 구조를 따라 Wagtail 관리자 인터페이스를 탐색합니다. 그러나 이로 인해 특히 페이지가 깊은 계층 구조로 구성된 대규모 사이트에서 편집할 특정 페이지를 찾는 데 시간이 오래 걸릴 수 있습니다. 사용자 정의 페이지 목록은 Wagtail 관리자 메뉴의 메뉴 항목에서 액세스하는 지정된 유형의 모든 페이지의 플랫 목록을 제공하는 방법이며, 편집자는 이 목록을 검색하고 필터링하여 관심 있는 페이지를 찾을 수 있습니다. 사용자 정의 페이지 목록을 정의하려면 {class}`~wagtail.admin.viewsets.pages.PageListingViewSet` 의 하위 클래스를 만들고 [`register_admin_viewset`](register_admin_viewset) 후크를 사용하여 등록합니다. 예를 들어 사이트에서 `BlogPage` 페이지 유형을 구현한 경우 앱 내의 `wagtail_hooks.py` 파일에 다음 정의를 추가하여 Wagtail 관리자에 "블로그 페이지" 목록을 제공할 수 있습니다. ```python # myapp/wagtail_hooks.py from wagtail import hooks from wagtail.admin.viewsets.pages import PageListingViewSet from myapp.models import BlogPage class BlogPageListingViewSet(PageListingViewSet): icon = "globe" menu_label = "블로그 페이지" add_to_admin_menu = True model = BlogPage blog_page_listing_viewset = BlogPageListingViewSet("blog_pages") @hooks.register("register_admin_viewset") def register_blog_page_listing_viewset(): return blog_page_listing_viewset ``` 목록의 열은 뷰셋에서 `columns` 속성을 재정의하여 사용자 정의할 수 있습니다. 이것은 `wagtail.admin.ui.tables.Column` 인스턴스의 목록이어야 합니다. ```python from wagtail import hooks from wagtail.admin.ui.tables import Column from wagtail.admin.viewsets.pages import PageListingViewSet from myapp.models import BlogPage class BlogPageListingViewSet(PageListingViewSet): # ... columns = PageListingViewSet.columns + [ Column("blog_category", label="카테고리", sort_key="blog_category"), ] ``` 목록의 필터링 옵션은 뷰셋에서 `filterset_class` 속성을 재정의하여 사용자 정의할 수 있습니다. ```python from wagtail import hooks from wagtail.admin.viewsets.pages import PageListingViewSet from myapp.models import BlogPage class BlogPageFilterSet(PageListingViewSet.filterset_class): class Meta: model = BlogPage fields = ["blog_category"] class BlogPageListingViewSet(PageListingViewSet): # ... filterset_class = BlogPageFilterSet ```