S
S
StasShk2016-05-22 16:34:37
Django
StasShk, 2016-05-22 16:34:37

How to make the right site structure on WagtailCMS?

Добрый день!
Я делаю каталог статей, что то вроде urbaninfluence.com/work/. Есть главная страница, где представлен список категорий, есть страницы категорий со списком статей и есть сами стать. Сделать все это хочется на Wagtail, нравится их StreamField. Мне кажется, на его основе можно сделать удобный инструмент для редакторов.
Но я не могу понять, как должна выглядеть структура сайта, то есть то, что написано в models.py. Статьи у меня будут вагитэйловские Page с StreamField.

class ItemPage(Page):
     ........
    body = StreamField([
       ......

Но как сделать список категорий? Надо ли использовать для них базовые модели Django, или через модели страниц Wagtail-а?
В целом, кто-нибудь работал с этой CMS?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
M
m1kola, 2016-07-30
@m1kola

You can use pages (inherit from Page) for the main page, for the category page and for the article page.
Those. you need three models:
Wagtail uses a tree structure for pages. Those. the page tree will look something like this:

- Root
-- Home (HomePage)
---- Category 1 (CategoryPage)
----- Article 1 (ArticlePage)
----- Article 2 (ArticlePage)
---- Category 2 (CategoryPage)
----- Article 3 (ArticlePage)

You can restrict for each page type which pages can be used as child pages (subpage_types) and which page types can be used as parent pages (parent_page_types).
Here is an example:
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 = []

There are other implementation options - the choice depends on your requirements. You can use snippets or tags as categories.
PS: the answer is late, but I hope it will be useful to those who have a similar question.

A
Alexey Ovdienko, 2016-05-23
@doubledare

Если этот Вагтейл на основе джанго - нужно 3 модели.
Категория и ее атрибуты внутри.
Статья ее атрибуты и внешний ключ от Категории.
По-джанговски: список категорий - просто вьюха с Category.objects.all()
Список статей Article.objects.filter(categoryid=some_id)
Статья Article.objects.get(id=some_id)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question