django 为预定义的块Wagtail CRX定义多个模板

um6iljoc  于 2023-01-27  发布在  Go
关注(0)|答案(2)|浏览(156)

我把一个网站移到了wagtail,决定使用codered extensions。这个库带有一个图片库内容块。我想使用这个,但是定义了一些模板,你可以在管理界面中选择。
你通常在meta部分定义一个模板,但是我注意到一个模板在admin UI中有一个下拉列表。我如何在这个下拉列表中添加一个模板?链接到我想要修改的内容块
我对添加一个HTML模板感兴趣,而不是从内容块继承来改变行为。(除非继承是添加模板到下拉列表的唯一方法。)

7xllpg7q

7xllpg7q1#

可以参数化要使用的模板的路径,然后在块模板中使用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有效,不确定是否编码。

zbdgwd5y

zbdgwd5y2#

Richard艾伦的答案是wagtail,非常适合您自己的块等。Wagtail块定义了一个单独的字段,用于包含的组件,为此您需要另一种方法。
首先你需要添加CRX_FRONTEND_TEMPLATE_BLOCKS到你的django设置mysite/settings/base.py中。
然后在mysite/website/templates中为块模板创建一个文件夹并创建一个自定义模板。然后将此路径作为条目添加到CRX_FRONTEND_TEMPLATE_BLOCKS。条目键应为小写的块。对于入门级,您可以从编码包(位于coderedcms/blocks/中)复制模板/html文件
现在模板应该可以从crx块的高级菜单下的模板下拉菜单中获得。
这个信息来自crx的gh issue。这是最近添加的,开发人员提到他们希望让这个更容易。所以这可能会在未来改变,这对我来说是在2023年1月26日。

相关问题