Netlify CMS是否支持按分类条件显示字段?
在Netlify CMS中实现分类关联的条件字段显示
完全可以实现这个需求,Netlify CMS支持通过条件逻辑控制字段的显示/隐藏,核心是利用字段配置中的hidden或show属性,结合自定义函数判断当前选中的分类值。
配置示例(YAML格式)
假设你的Product集合配置如下,我们为不同分类添加专属字段,并设置显示条件:
collections: - name: 'product' label: '产品' folder: 'content/products' create: true fields: # 基础字段 - { label: '产品名称', name: 'title', widget: 'string' } # 分类选择字段 - label: '产品分类' name: 'category' widget: 'select' options: - { label: '戒指', value: 'ring' } - { label: '手链', value: 'bracelet' } - { label: '项链', value: 'necklace' } # 戒指专属字段:仅选中「戒指」时显示 - label: '指环尺寸' name: 'ring_size' widget: 'string' hidden: !!js/function > (fields) { return fields.category !== 'ring' } # 手链专属字段:仅选中「手链」时显示 - label: '手链长度' name: 'bracelet_length' widget: 'string' show: !!js/function > (fields) { return fields.category === 'bracelet' } # 项链专属字段:仅选中「项链」时显示 - label: '项链链长' name: 'necklace_length' widget: 'string' hidden: !!js/function > (fields) { return fields.category !== 'necklace' }
关键说明
- 条件函数:使用
!!js/function定义判断逻辑,函数接收fields参数,包含当前表单已填写的所有字段值,通过对比fields.category的值来控制显示。 hiddenvsshow:hidden:当函数返回true时,字段隐藏;返回false时显示show:当函数返回true时,字段显示;返回false时隐藏
- 匹配分类值:注意判断的是分类选项的
value(如ring),而不是显示的label(如「戒指」) - JSON格式适配:如果你的配置是JSON格式,函数需要写成字符串形式,例如:
{ "label": "指环尺寸", "name": "ring_size", "widget": "string", "hidden": "function(fields) { return fields.category !== 'ring' }" }
内容的提问来源于stack exchange,提问作者CodeCodeCodon
相关产品推荐
相关产品推荐

