为预定义的块wagtail CRX定义多个模板



我正在将一个站点转移到wagtail,并决定使用编码扩展。该库附带了一个图像库内容块。我想使用这个,但定义了一些模板,你可以从管理UI中选择。

通常在meta部分定义模板,但我注意到在管理UI中为模板定义了一个下拉菜单。如何将模板添加到该下拉列表中?链接到我想要更改的内容块

我有兴趣添加一个HTML模板,而不是从内容块继承来改变行为。(除非继承是将模板添加到下拉列表的唯一方法。)

你可以将路径参数化到你想要使用的模板,然后在你的块模板中使用include来指向所选择的模板。

例如,如果你有一个卡片块,选择垂直或水平格式。在你的卡片块类中,你可能有一个名为template的属性,它使用了一个选择块,比如

class AlignmentChoiceBlock(ChoiceBlock):
choices=[
('blocks/flex/vertical_card.html', 'Vertical'), 
('blocks/flex/horizontal_card.html', 'Horizontal') 
]

然后在你的块模板中,它只包含:

<div class="some-block-container">
{% include value.template %}
</div>

好吧,这至少适用于Wagtail,不确定是否编码。

Richard Allen给出的答案非常适合你自己的积木等等。Wagtail块定义了一个单独的字段,用于其包含的组件,为此您需要另一种方法。

首先你需要添加CRX_FRONTEND_TEMPLATE_BLOCKS到你的django设置mysite/settings/base.py

然后在mysite/website/templates中为您的块模板创建一个文件夹并创建一个自定义模板。然后将此路径作为条目添加到CRX_FRONTEND_TEMPLATE_BLOCKS中。输入键应该是小写的块。对于初学者,您可以从编码包中复制模板/html文件,在coderedcms/blocks/

中找到。现在,模板应该可以从crx块的高级菜单下的模板下拉菜单中获得。

这个信息来自于crx的一个严重问题。这是最近添加的,开发人员提到他们希望使其更容易。所以这在未来可能会改变,这在2023年1月26日对我有效。

最新更新