Настройка конфігурації колекцій Decap CMS
Колекції — центральний елемент config.yml. Кожна колекція визначає тип контенту: де зберігаються файли, як вони називаються, які поля доступні редактору. Правильно налаштовані колекції — різниця між CMS, якою зручно користуватися, та набором непозрозумілих полів.
Два типи колекцій
Folder collection — список однотипних записів (статті, кейси, вакансії):
collections:
- name: blog
label: Блог
folder: content/blog
create: true
delete: true
slug: "{{slug}}"
fields:
- { label: Заголовок, name: title, widget: string }
- { label: Контент, name: body, widget: markdown }
Files collection — фіксований набір сторінок (головна, про нас, контакти):
- name: pages
label: Сторінки
files:
- label: Головна сторінка
name: home
file: content/home.yaml
fields:
- { label: Hero Title, name: hero_title, widget: string }
- label: Про нас
name: about
file: content/about.md
fields:
- { label: Контент, name: body, widget: markdown }
Віджети полів
Повний набір для реальних проектів:
fields:
- { label: Рядок, name: title, widget: string, required: true }
- { label: Текст, name: description, widget: text }
- { label: Число, name: order, widget: number, value_type: int }
- { label: Булево, name: featured, widget: boolean, default: false }
- { label: Дата, name: date, widget: datetime, format: "YYYY-MM-DD" }
# Вибір зі списку
- label: Категорія
name: category
widget: select
options: [{label: Новини, value: news}, {label: Кейси, value: cases}]
# Медіафайл
- { label: Обложка, name: cover, widget: image, required: false }
# Markdown-редактор
- { label: Контент, name: body, widget: markdown, modes: [rich_text, raw] }
# Список рядків
- { label: Теги, name: tags, widget: list }
# Вложений об'єкт
- label: SEO
name: seo
widget: object
fields:
- { label: Meta Title, name: title, widget: string }
- { label: Meta Description, name: description, widget: text }
# Список об'єктів
- label: Переваги
name: features
widget: list
fields:
- { label: Іконка, name: icon, widget: string }
- { label: Заголовок, name: title, widget: string }
Шаблон імені файлу
slug визначає імя створюваного файлу. Доступні шаблонні змінні:
# Дата + slug з заголовка
slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
# Результат: 2025-03-15-my-first-post.md
# Тільки slug
slug: "{{slug}}"
# Кастомне поле
slug: "{{fields.id}}-{{slug}}"
Сортування та фільтрування
- name: team
label: Команда
folder: content/team
sortable_fields: ['name', 'position', 'order']
view_filters:
- label: Тільки активні
field: active
pattern: true
- label: Менеджери
field: department
pattern: management
view_groups:
- label: По відділу
field: department
Умовні поля
fields:
- label: Тип блока
name: type
widget: select
options: [text, video, gallery]
- label: Текст
name: text
widget: markdown
condition:
field: type
value: text
- label: URL відео
name: video_url
widget: string
condition:
field: type
value: video
i18n колекцій
i18n:
structure: multiple_files
locales: [uk, en]
default_locale: uk
collections:
- name: services
label: Послуги
folder: content/services
i18n: true
fields:
- { label: Заголовок, name: title, widget: string, i18n: true }
- { label: Слаг, name: slug, widget: string, i18n: duplicate }
- { label: Контент, name: body, widget: markdown, i18n: true }
Терміни
5–8 типів контенту: 4–8 годин. З i18n, умовними полями, relations: 1–2 дні.







