Ми часто стикаємося з ситуацією, коли 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.







