Определение нескольких шаблонов для блока
Я перевожу сайт на 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.