簡體   English   中英

為預定義塊 wagtail CRX 定義多個模板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM