Определение нескольких шаблонов для блока

Я перевожу сайт на wagtail и решил использовать расширения codered. Библиотека поставляется с контент-блоком image-gallery. Я хочу использовать его, но определить несколько шаблонов, которые можно выбрать в админке.

Обычно вы определяете шаблон в разделе meta, но я заметил, что в админке есть выпадающий список для шаблона. Как мне добавить шаблон в этот выпадающий список? Ссылка на блок контента, который я хочу изменить

Меня интересует добавление 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, не уверен насчет codered.

Ответ Ричарда Аллена работает с wagtail и идеально подходит для ваших собственных блоков и т.д. Блоки трясогузки определяют отдельное поле, которое используется для их включенных компонентов, для этого нужен другой подход.

Сначала вам нужно добавить CRX_FRONTEND_TEMPLATE_BLOCKS в настройки django mysite/settings/base.py.

Затем создайте папку для шаблонов блоков в mysite/website/templates и создайте пользовательский шаблон. Затем добавьте этот путь в качестве записи в CRX_FRONTEND_TEMPLATE_BLOCKS. Ключом записи должен быть блок в нижнем регистре. Для начала вы можете скопировать файл template/html из пакета codered, который находится в coderedcms/blocks/

Теперь шаблон должен быть доступен из выпадающего списка шаблонов в расширенном меню блока crx.

Эта информация взята из gh выпуска crx. Это довольно недавнее дополнение, и разработчик упомянул, что они хотят сделать это проще. Так что это может измениться в будущем, у меня это сработало 26/01/2023.

Вернуться на верх