Netlify CMS配置自定义slug后生成markdown文件名为null问题求助
问题根因
空文件名问题是path字段的变量引用规则配置错误导致的,Netlify CMS对集合级的slug、path字段的变量解析规则不同,同时配置两个字段时path优先级更高,解析失败时就会返回空值,最终生成.md的无名称文件。
排查&解决步骤
1. 移除重复配置,调整slug引用语法
你当前同时配置了slug: "{{fields.slug}}"和path: "{{fields.slug}}"属于重复配置,path字段会覆盖slug的规则。先删除path: "{{fields.slug}}"这一行,只保留slug配置,同时修改slug的引用语法为直接引用字段名,不需要加fields.前缀:
slug: "{{slug}}"
这里的{{slug}}直接对应你自定义的slug字段值,不会和内置变量冲突。
2. 如需保留path字段按规则调整表达式
如果你的场景需要自定义文件路径(比如按目录分类存储),path字段的变量不需要加fields.前缀,直接写字段名即可:
# 删除原来的slug配置,只保留path path: "{{slug}}" # 如果需要嵌套目录可以写为 path: "staff/{{slug}}"
3. 调整字段顺序避免解析依赖问题
把你自定义的slug字段放到fields列表的最前面,避免其他字段加载时slug还未被解析导致取值为空:
fields: - { label: "Slug", name: "slug", widget: "string", pattern: [ "^[a-z0-9]+(?:-[a-z0-9]+)*$", "A slug can have no spaces or special characters", ], required: true, } - { label: "Type", name: "type", widget: "string" } # 其余字段保持不变
4. 清除缓存验证
修改配置后,清除浏览器缓存再重新进入Netlify CMS后台新建内容测试,Netlify CMS会在本地缓存旧的config.yml配置,可能导致修改不生效。
修复后的完整配置参考
collections: - name: "staff" label: "Staff Members" label_singular: "Staff Member" summary: "{{firstName}} {{lastName}}" folder: "content/staff" create: true slug: "{{slug}}" media_folder: "" public_folder: "" sortable_fields: ["frontmatter.email"] editor: preview: true fields: - { label: "Slug", name: "slug", widget: "string", pattern: [ "^[a-z0-9]+(?:-[a-z0-9]+)*$", "A slug can have no spaces or special characters", ], required: true, } - { label: "Type", name: "type", widget: "string" } - { label: "First Name", name: "firstName", widget: "string" } - { label: "Last Name", name: "lastName", widget: "string" } - { label: "Email", name: "email", widget: "string" } - { label: "Body", name: "body", widget: "markdown" }
内容的提问来源于stack exchange,提问作者Keith
相关产品推荐
相关产品推荐

