首页 > 解决方案 > 将片段注入 Wagtail StreamField 接口

问题描述

我的公司正在使用 Wagtail 为我们的网站构建强大的页面,可能使用 StreamField 组件。我们想知道 Wagtail 是否允许我们创建可重用的部分(可能在片段中),并将它们注入到页面中。

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

在此处输入图像描述

目标当然是创建一个可以嵌入到另一个页面中的元素,但可以在一个地方更新并在任何使用它的地方级联。

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

[embed id=123456]

标签: wagtailwagtail-streamfieldwagtail-snippet

解决方案


您可以为流字段创建新块,假设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())])

推荐阅读