![](/img/trans.png)
[英]Wagtail - how to setup multiple paths with different templates to the same model instaces?
[英]Define multiple templates for a predefined block wagtail CRX
我正在將網站移至wagtail 並決定使用編碼擴展。 該庫帶有一個圖片庫內容塊。 我想使用它,但定義了一些您可以在管理 UI 中選擇的模板。
您通常在元部分定義一個模板,但我注意到模板的管理 UI 中有一個下拉菜單。 如何向該下拉列表添加模板? 鏈接到我要更改的內容塊
我有興趣添加一個 HTML 模板,而不是從內容塊繼承來改變行為。 (除非繼承是將模板添加到下拉列表的唯一方法。)
您可以將要使用的模板的路徑參數化,然后在您的塊模板中使用include
指向所選模板。
例如,如果您有一個卡片塊,可以選擇垂直或水平格式。 在您的卡塊 class 中,您可能有一個名為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,非常適合您自己的塊等。Wagtail 塊定義了一個單獨的字段,用於其包含的組件,為此您需要另一種方法。
首先,您需要將CRX_FRONTEND_TEMPLATE_BLOCKS添加到您的 django 設置mysite/settings/base.py
中。
然后在mysite/website/templates
中為您的塊模板創建一個文件夾並創建一個自定義模板。 然后將此路徑作為條目添加到 CRX_FRONTEND_TEMPLATE_BLOCKS。 入口鍵應該是小寫的塊。 對於初學者,您可以從 codered package 復制一個模板/html 文件,該文件位於coderedcms/blocks/
現在模板應該可以從 crx 塊的高級菜單下的模板下拉列表中獲得。
此信息來自 crx 的gh 問題。 這是最近添加的內容,開發人員提到他們希望簡化此操作。 所以這在未來可能會改變,這在 2023 年 1 月 26 日對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.