Ответы пользователя по тегу Django
  • Как сделать правильную структуру сайта на WagtailCMS?

    m1kola
    @m1kola
    Вы можете использовать страницы (наследоваться от Page) для главной страницы, для страницы категории и для страницы статьи.

    Т.е. вам нужны три модели:
    • class HomePage(Page)
    • class CategoryPage(Page)
    • class ArticlePage(Page)


    Wagtail использует древовидную структуру для страниц. Т.е. дерево страниц будет примерно таким:
    - Root
    -- Home (HomePage)
    ---- Category 1 (CategoryPage)
    ----- Article 1 (ArticlePage)
    ----- Article 2 (ArticlePage)
    ---- Category 2 (CategoryPage)
    ----- Article 3 (ArticlePage)


    Вы можете ограничить для каждого типа страницы какие страницы могут использоваться как дочерние (subpage_types) и какие типы страниц могут использоваться как родительские (parent_page_types).

    Вот пример:
    class HomePage(Page):
        # Ваши поля, если нужно
    
        # Тут не ограничиваем дочерние и родительские страницы
        # т.к. на сайте могут быть не только 3 типа страниц
    
    
    class CategoryPage(Page):
        # Ваши поля, если нужно
    
        # Может быть создана только как дочерняя страница для HomePage
        parent_page_types = ['your_django_app_name.HomePage']
    
        # Дочерними страницами могут быть только CategoryPage.
        subpage_types = ['your_django_app_name.CategoryPage']
    
    
    class ArticlePage(Page):
        # Ваши поля. StreamField, или что угодно
    
        # Может быть создана только как дочерняя страница для CategoryPage
        parent_page_types = ['your_django_app_name.CategoryPage']
    
        # Дочерних страниц у этой страницы быть не может
        subpage_types = []


    Есть другие варианты реализации - выбор зависит от ваших требований. Вы можете использовать сниппеты или теги в качестве категорий.

    P.S.: ответ запоздал, но надеюсь он будет полезен тем у кого возникнет похожий вопрос.
    Ответ написан
    Комментировать