Внедрение фрагментов в интерфейс Wagtail StreamField - PullRequest
0 голосов
/ 12 февраля 2019

Моя компания использует Wagtail для создания надежных страниц для нашего сайта, вероятно, с использованием компонента StreamField.Нам интересно, позволяет ли Wagtail создавать многократно используемые детали (возможно, во фрагменте) и вставлять их на страницу.

Я включаю простую схему того, что я хотел бы сделать.Обратите внимание, что хотя фрагменты и являются одним из возможных предложений, оно не требует конкретного решения.

enter image description here

Цель, конечно, состоит в создании элемента, которыйможет быть встроен в другую страницу, но может обновляться в одном месте и каскадироваться везде, где он используется.

Например, Wordpress имеет плагин, который предлагает эту функцию в формате краткого кода:

[embed id=123456]

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете создать новый блок для поля потока, скажем, MySnippetBlock, а затем использовать SnippetChooserBlock , чтобы выбрать нужный фрагмент.

MySnippetBlock(StructBlock):
   title = CharBlock()
   snippet = SnippetChooserBlock()

Затем в поле StreamBlock вы можетеиспользуйте вышеуказанный пользовательский блок:

MyPage(Page):
   stream_field_content = StreamField([('snippet_block', MySnippetBlock())])
...

Или вы можете использовать SnippetChooserBlock непосредственно в StreamField, если нет необходимости в дополнительной информации, прикрепленной к нему.

stream_field_content = StreamField([('snippet_block', SnippetChooserBlock())])
...