将片段插入Wagtail StreamField接口

时间:2019-02-12 17:36:00

标签: wagtail wagtail-streamfield wagtail-snippet

我的公司正在使用Wagtail为我们的网站构建健壮的页面,可能使用StreamField组件。我们想知道Wagtail是否允许我们创建可重复使用的部件(也许在一段代码中)并将其注入到页面中。

我包括一张我想做的简单图表。请注意,虽然片段是一种可能的建议,但并不需要特定的解决方案。

enter image description here

当然,目标是创建一个元素,该元素可以嵌入到另一个页面中,但是可以在单个位置进行更新,并且可以在使用该元素的任何地方进行层叠。

例如,WordPress,具有一个以短代码格式提供此功能的插件:

[embed id=123456]

1 个答案:

答案 0 :(得分:2)

您可以为流字段创建新的块,例如MySnippetBlock,然后使用SnippetChooserBlock选择所需的代码段。

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

然后在StreamBlock字段中,可以在自定义块上方使用

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

或者,如果不需要附加附加信息,也可以直接在StreamField中使用SnippetChooserBlock。

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