Eleventy自定义集合无法填充Decap CMS关联字段求助
问题原因
Decap CMS(原Netlify CMS)无法直接调用Eleventy通过addCollection创建的动态集合。核心原因是:
- Eleventy的自定义集合是构建阶段生成的,仅存在于Eleventy的构建上下文,不会暴露给前端运行的Decap CMS。
- Decap CMS只能识别自身
config.yml中定义的集合,或直接读取内容文件夹里的原始文件。
解决方案
方案1:直接关联CMS已定义的集合
如果你的posts内容已经在Decap CMS的config.yml中配置了对应的集合(比如名为posts的folder集合),直接在relation字段中引用这个CMS集合即可:
- { label: "Featured Visual", name: "featuredVisual", required: false, widget: "relation", collection: "posts", search_fields: ["title"], value_field: "{{slug}}", display_fields: ["title"], multiple: true }
方案2:在CMS中直接筛选内容
如果需要仅关联带posts标签的内容,无需依赖Eleventy的集合,直接在relation字段中添加filter参数实现筛选,和你Eleventy集合的逻辑完全对齐:
- { label: "Featured Visual", name: "featuredVisual", required: false, widget: "relation", collection: "posts", search_fields: ["title"], value_field: "{{slug}}", display_fields: ["title"], multiple: true, filter: { field: "tags", value: "posts" } }
方案3:自定义CMS数据源(进阶)
如果需要更复杂的集合逻辑,可通过Decap CMS的自定义后端API或load_file功能,提前生成符合要求的内容列表供CMS读取,但这需要额外的后端或构建脚本支持,适合复杂业务场景。
补充说明
你原有的Eleventy集合代码可以保留,用于前端模板渲染;CMS端只需通过上述方案,在自身配置中实现对应筛选逻辑即可。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

