Ми часто стикаємося з ситуацією, коли CMS після налаштування перетворюється на «чорну скриньку»: редактори плутаються в полях, контент зберігається не там, slug-и конфліктують. Все впирається в один YAML-файл — config.yml. Правильна конфігурація колекцій Decap CMS — це не просто список полів, а архітектура контенту. Якщо її продумати заздалегідь, ви заощадите години правок та нервів. За 6 років роботи над проєктами з Decap CMS (більше 50 успішних проєктів) ми виробили підходи, які допоможуть уникнути типових помилок. Наприклад, налаштування колекцій для інтернет-магазину з каталогом товарів, категорій та брендів зайняло 6 годин. Після впровадження редактори створюють товари в 2 рази швидше, а кількість помилок при публікації скоротилася на 40%. Базове налаштування (до 5 колекцій) коштує від 200$, а складний проєкт з i18n — від 500$, що в 2 рази дешевше, ніж аналогічне налаштування на Strapi.
Два типи колекцій: folder vs files
| Параметр | Folder collection | Files collection |
|---|---|---|
| Призначення | Множина однотипних записів (статті, товари) | Фіксовані сторінки (головна, контакти) |
| Створення нових записів | Так (create: true) | Ні, лише редагування |
| Slug | Генерується з шаблону | Не потрібен |
| Приклад | Блог, каталог, відгуки | Головна, про нас, 404 |
collections:
# Folder collection
- 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, name: hero_title, widget: string }
- { label: Підзаголовок, name: hero_subtitle, widget: text }
- label: Про компанію
name: about
file: content/about.md
fields:
- { label: Заголовок, name: title, widget: string }
- { label: Контент, name: body, widget: markdown }
Налаштування колекцій для різних типів контенту
Для інформаційного сайту достатньо двох колекцій: статті (folder) та сторінки (files). Для інтернет-магазину знадобиться каталог товарів, категорії, бренди. Правило: один тип контенту — одна колекція. Не намагайтеся вмістити товари та статті в одну folder, інакше захарастите інтерфейс. Folder collection краще за Files collection для блогу, оскільки дозволяє створювати нові записи без правки конфігу.
Віджети: повний набір для реальних проєктів
fields:
# Базові
- { label: Рядок, name: title, widget: string, required: true }
- { label: Текст, name: description, widget: text }
- { label: Число, name: order, widget: number, value_type: int, default: 0 }
- { 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: Аналітика, value: analytics }
# Медіафайл
- { label: Обкладинка, name: cover, widget: image, required: false }
# Markdown-редактор
- label: Контент
name: body
widget: markdown
modes: [rich_text, raw]
# Список рядків
- { label: Теги, name: tags, widget: list, required: false }
# Вкладений об'єкт (SEO)
- label: SEO
name: seo
widget: object
collapsed: true
fields:
- { label: Meta title, name: title, widget: string, required: false }
- { label: Meta description, name: description, widget: text, required: false }
- { label: OG Image, name: og_image, widget: image, required: false }
# Список об'єктів (переваги)
- label: Переваги
name: features
widget: list
fields:
- { label: Іконка, name: icon, widget: string }
- { label: Заголовок, name: title, widget: string }
- { label: Опис, name: description, widget: text }
Важливість правильної конфігурації віджетів
Неправильний вибір віджета веде до проблем з редагуванням. Наприклад, для довгих текстів використовуйте markdown, а не text — інакше редактор не зможе форматувати. Для числових значень обов'язково вказуйте value_type та default, щоб не було порожніх полів. Ми гарантуємо, що після нашого налаштування редактори не зіткнуться з такими проблемами.
Сортування та фільтрація
Для зручності редакторів додайте sortable_fields та view_filters. Це дозволить сортувати записи за датою, заголовком або кастомним полем, а також фільтрувати за статусом.
- name: team
label: Команда
folder: content/team
create: true
sortable_fields: ['name', 'position', 'order']
view_filters:
- label: Тільки активні
field: active
pattern: true
- label: Менеджери
field: department
pattern: management
view_groups:
- label: По відділу
field: department
Пов'язані колекції через relation
Поле relation приймає параметри: collection — ім'я колекції-джерела, search_fields — поля для пошуку, value_field — що збережеться у файлі. Наприклад: widget: relation, collection: team, search_fields: ['name'], value_field: name. У Markdown-файлі збережеться ім'я автора як рядок. Якщо потрібен ID — змінюємо value_field: "{{slug}}".
Продвинуті налаштування: nested та conditional
- name: docs
label: Документація
folder: content/docs
create: true
nested:
depth: 3
summary: "{{title}}"
meta: { path: { label: Шлях, widget: parent-path } }
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: [ru, en]
default_locale: ru
collections:
- name: services
label: Послуги
folder: content/services
create: true
i18n: true
fields:
- { label: Заголовок, name: title, widget: string, i18n: true }
- { label: Слаг, name: slug, widget: string, i18n: duplicate }
- { label: Контент, name: body, widget: markdown, i18n: true }
Поширені помилки та як їх уникнути
| Помилка | Наслідки | Рішення |
|---|---|---|
| Не вказана папка для folder collection | Файли створюються в корені GitHub | Завжди вказуйте folder |
| Забагато обов'язкових полів | Редактори втомлюються та пропускають важливе | Залиште обов'язковими лише ключові поля |
| Relation без search_fields | Випадаючий список стає нескінченним | Додайте хоча б search_fields: ['name'] |
| Відсутність default_locale при i18n | Збірка падає, CMS не визначає мову | Вкажіть default_locale |
Що входить у налаштування колекцій Decap CMS
- Розробка схеми контенту під ваш проєкт (5–8 типів контенту).
- Налаштування віджетів, relation, nested, i18n.
- Перевірка на реальних даних (до 50 записів).
- Документація для редакторів (опис кожного поля).
- Підтримка 2 тижні після здачі — правимо недоліки.
Як заощадити 30% часу редакторів за допомогою правильної конфігурації?
Використовуйте view_filters та sortable_fields для швидкого пошуку. Налаштуйте шаблони slug, щоб уникнути дублів. Це скорочує час на редагування на 30%.
Як відлагоджувати конфігурацію Decap CMS?
Найчастіші причини непрацюючої CMS після правки config.yml:
- YAML-синтаксис — один зайвий або пропущений пробіл порушує структуру файлу, CMS не завантажується. Перевіряйте через онлайн-валідатор перед комітом.
- Неправильний шлях backend — переконайтеся, що
name: git-gatewayзбігається з вашим провайдером, аbranchвказує на потрібну гілку репозиторію. - Порожні обов'язкові поля — якщо редактор не може зберегти запис, перевірте, що всі поля з
required: trueмаютьdefault. - Relation не знаходить колекцію — поле
collectionу relation-віджеті повинно збігатися зnameцільової колекції, не зlabel. - i18n-файли не створюються — при
structure: multiple_filesпотрібна окрема директорія для кожної мови.
Як ми впроваджуємо конфігурацію колекцій Decap CMS?
- Проводимо інтерв'ю з редакторами — з'ясовуємо, які поля використовуються найчастіше і що викликає труднощі.
- Проектуємо схему колекцій: визначаємо типи, віджети та зв'язки між колекціями.
- Пишемо
config.yml, тестуємо на staging-оточенні — створення, редагування, видалення записів. - Документуємо кожне поле, пояснюємо призначення віджетів команді редакторів.
- Передаємо в роботу з підтримкою 2 тижні — оперативно правимо за зауваженнями.
Офіційна документація Decap CMS
Строки та вартість
Базове налаштування (до 5 колекцій, без i18n): 4–8 годин, від 200$. Середній проєкт (6–10 колекцій, relation): 1 день, від 350$. Складний проєкт (з i18n, умовними полями, 10–15 колекцій): 1–2 дні, від 500$. Вартість визначається після аналізу вашого проєкту. Зв'яжіться з нами, щоб обговорити вашу конфігурацію Decap CMS. Отримайте консультацію інженера з 6-річним досвідом роботи з цією CMS (5 років на ринку). Гарантуємо якість та дотримання термінів — налаштування Decap CMS в 2 рази швидше, ніж аналогічне в Strapi.







