admin: Decap articles collection -> nested (depth 2) with meta.path for folder-per-article layout

This commit is contained in:
sam
2026-09-10 13:05:34 +10:00
parent e646be3434
commit 73513fb5e0

View File

@@ -29,7 +29,11 @@ collections:
folder: subjects folder: subjects
create: true create: true
slug: "{{slug}}" slug: "{{slug}}"
path: "{{slug}}/{{slug}}" # nested layout: subjects/<subject>/<slug>/<slug>.md
nested:
depth: 2
meta:
path: { widget: string, label: Path, index_file: _index, editable_folder: false, searchable: false }
sortable_fields: [date, title] sortable_fields: [date, title]
fields: fields:
- { name: title, label: Title, widget: string } - { name: title, label: Title, widget: string }
@@ -38,7 +42,7 @@ collections:
- { name: kicker, label: Kicker (section tag), widget: string, required: false } - { name: kicker, label: Kicker (section tag), widget: string, required: false }
- { name: template, label: Template, widget: string, default: article } - { name: template, label: Template, widget: string, default: article }
- { name: subject, label: Subject, widget: relation, collection: subjects, value_field: slug, search_fields: [name], display_fields: [name] } - { name: subject, label: Subject, widget: relation, collection: subjects, value_field: slug, search_fields: [name], display_fields: [name] }
- { name: image, label: 'Cover image (upload first at /admin/media; then use: {{media:filename}})', widget: string, required: false } - { name: image, label: 'Cover image (drop in this article\'s folder, then use: {{media:slug/file}})', widget: string, required: false }
- { name: excerpt, label: Excerpt / deck, widget: text, required: false } - { name: excerpt, label: Excerpt / deck, widget: text, required: false }
- { name: tags, label: Tags, widget: list, allow_add: true, required: false } - { name: tags, label: Tags, widget: list, allow_add: true, required: false }
- { name: featured, label: Featured on front page, widget: boolean, default: false } - { name: featured, label: Featured on front page, widget: boolean, default: false }