我的公司正在使用Wagtail为我们的网站构建健壮的页面,可能使用StreamField组件。我们想知道Wagtail是否允许我们创建可重复使用的部件(也许在一段代码中)并将其注入到页面中。
我包括一张我想做的简单图表。请注意,虽然片段是一种可能的建议,但并不需要特定的解决方案。
当然,目标是创建一个元素,该元素可以嵌入到另一个页面中,但是可以在单个位置进行更新,并且可以在使用该元素的任何地方进行层叠。
例如,WordPress,具有一个以短代码格式提供此功能的插件:
[embed id=123456]
答案 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())])