如何为Wagtail CRX预定义图片画廊块添加后台模板选项?
给Codered CMS的Image Gallery块添加自定义模板选项
首先明确:不继承块的话没法直接把自定义模板加到后台下拉菜单里——这个下拉菜单的选项是从块的meta类里的template或templates属性读取的,而Codered默认的ImageGalleryBlock只指定了单个模板。
不过继承块的操作非常简单,步骤如下:
- 在项目的
blocks.py中导入原块:
from coderedcms.blocks.content_blocks import ImageGalleryBlock
- 继承原块,在
meta类里添加templates属性,把默认模板和你的自定义模板都列进去:
class CustomImageGalleryBlock(ImageGalleryBlock): class Meta: templates = [ ("coderedcms/blocks/image_gallery_block.html", "默认样式"), ("your_app/blocks/custom_image_gallery.html", "自定义样式"), ] # 保留原块的其他元属性 icon = "image" label = "图片画廊"
在你指定的路径下创建自定义模板文件
custom_image_gallery.html,可以先复制原模板的内容,再修改成你需要的HTML结构和样式。在页面模型里,把原先使用
ImageGalleryBlock的位置替换成CustomImageGalleryBlock即可。
如果实在不想继承块,还有个不推荐的临时方案:直接修改Codered源码里ImageGalleryBlock的meta.templates字段,但这样后续升级Codered时你的修改会被覆盖,风险很高。
所以最稳妥且低成本的方式还是继承块,代码量少,也不影响后续框架升级。
内容的提问来源于stack exchange,提问作者GreatGaja
相关产品推荐
相关产品推荐

