Як налаштовувати Collections та Entries в Statamic
Коли контент сайту розростається до сотень сторінок, управління ними перетворюється на хаос. Collections у Statamic — це не просто аналог Post Types у WordPress, а гнучка система організації контенту. Наприклад, інтернет-магазин з 5000 товарів, 200 категорій і сотнями акцій — без правильної архітектури колекцій підтримка такого обсягу даних стає пеклом. Ми налаштовуємо їх так, щоб ви легко знаходили та редагували будь-який запис, а відвідувачі бачили гарні URL. Налаштування 3–5 колекцій з правильними маршрутами та таксономіями займає від 4 до 8 годин, що в 3 рази швидше, ніж аналогічне налаштування через WordPress Custom Post Types та плагіни. Правильна архітектура дозволяє скоротити час розробки складних систем управління контентом на 40%, а бюджет проєкту — на 30%. Вартість послуг: від 8000 грн до 15000 грн за проєкт.
Як Statamic Collections вирішують проблему структури контенту?
Collections — основна одиниця організації контенту в Statamic. Вони визначають URL-структуру, порядок, деревоподібність та Blueprint для кожного типу записів. На відміну від WordPress Post Types, тут немає жорстких обмежень: ви самі вирішуєте, які поля, маршрути та поведінка будуть у кожної колекції. Як сказано в документації: > "Collections define the URL structure, order, and blueprint" — Statamic Docs.
Створення колекції починається з команди php artisan statamic:make:collection blog або php artisan statamic:make:collection pages --structure для ієрархічних. Після створення налаштуйте конфіг у content/collections/blog.yaml:
title: Blog
template: blog/show
layout: layout
date: true
date_behavior:
past: public
future: private # приховуємо відкладені публікації
sort_field: date
sort_direction: desc
paginate: 12
slugs: true
propagate: false
routes: '/blog/{slug}'
Для багаторівневого контенту (документація, каталог) використовуйте прапорець --structure. У конфігу вкажіть routes: '/{parent_uri}/{slug}' та додайте секцію structure:
structure:
root: true
max_depth: 3
tree: true
В одному з проєктів ми зіткнулися з необхідністю організувати багаторівневу документацію для SaaS-продукту. Використання структурованої колекції дозволило створити ієрархію до 3 рівнів вкладеності, а також автоматично генерувати хлібні крихти та меню. У результаті час виходу на ринок скоротився на 2 тижні, а час завантаження сторінок документації покращився на 20% завдяки кешуванню. Економія бюджету на цьому проєкті склала близько 35%.
Як працювати з Entries: від YAML до PHP API
Entries — це конкретні записи всередині колекції. Кожен запис — файл .md з YAML-фронтматером. Приклад:
# content/collections/blog/my-first-post.md
---
id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
title: My First Post
slug: my-first-post
template: blog/show
blueprint: post
published: true
categories:
- key: web-development
featured_image: assets/images/hero.jpg
excerpt: Short description of the post
---
Content of the post in Markdown.
Запити в шаблонах (Antlers)
{{ collection:blog status:is="published" sort="date:desc" limit="6" taxonomy:categories="web-development" }}
{{ results }}
{{ partial:blog/post-card :post="this" }}
{{ /results }}
{{ /collection:blog }}
PHP-запити через API
use Statamic\Facades\Entry;
$posts = Entry::query()
->where('collection', 'blog')
->where('status', 'published')
->orderBy('date', 'desc')
->limit(10)
->get();
$post = Entry::query()
->where('collection', 'blog')
->where('slug', $slug)
->first();
Локалізація контенту також проста: для кожної колекції увімкніть поле sites у конфігу. Це дозволяє зберігати переклади в окремих файлах і керувати ними через Control Panel. У проєкті з 10 колекціями та 5 мовами локалізація скоротила час на створення контенту на 35%.
Отримайте консультацію з налаштування колекцій — оцінимо ваш проєкт протягом дня.
Чому таксономії важливі для навігації?
Taxonomies (категорії та теги) допомагають групувати записи та покращують навігацію. Вони задають свою URL-структуру та можуть бути прив'язані до кількох колекцій. Налаштування таксономії категорій: створіть файл content/taxonomies/categories.yaml із зазначенням маршруту та прив'язаних колекцій. У шаблонах виводьте список категорій з кількістю записів, використовуючи тег {{ taxonomy:categories }}.
Приклад таксономії для блогу: категорії web-development, design, devops. Кожна категорія має свою сторінку /categories/web-development, на якій виводяться записи з колекції blog. Це покращує SEO та спрощує користувацьку навігацію. За нашим досвідом, впровадження таксономій збільшило перегляди сторінок на 15%.
Порівняння типів колекцій
| Характеристика |
Звичайна колекція |
Структурована колекція |
| Ієрархія |
Плоска |
Деревоподібна (до 3 рівнів) |
| URL |
/{slug} |
/{parent_uri}/{slug} |
| Для чого |
Блог, новини |
Документація, каталог |
| Сортування |
За датою або полем |
Вручну через перетягування |
Порівняння з WordPress Custom Post Types
| Характеристика |
Statamic Collections |
WordPress CPT |
| Гнучкість |
Висока: будь-які поля, маршрути |
Обмежена: метабокси, таксономії за замовчуванням |
| Швидкість налаштування |
1–2 години на колекцію |
3–4 години з плагінами |
| URL-структура |
Повний контроль через YAML |
Залежить від налаштувань пермалінків |
Statamic налаштовується в 3 рази швидше, а кожна колекція — це окремий файл конфігурації без бази даних. Детальніше про формат конфігів читайте в офіційній документації Statamic.
Що входить в роботу
- Аналіз типів контенту та проєктування структури колекцій і таксономій.
- Створення Blueprint’ів з потрібними полями та валідацією.
- Налаштування маршрутів, дат та поведінки публікації.
- Інтеграція з шаблонами Antlers та PHP-запитами.
- Документація за структурою, доступ до Git-репозиторію та навчання команди.
- Місяць підтримки після здачі.
Терміни та вартість
Налаштування 3–5 колекцій з правильними маршрутами та таксономіями — від 4 до 8 годин. Вартість: від 8000 грн до 15000 грн залежно від складності. У нас більше 5 років досвіду роботи зі Statamic та Laravel — гарантуємо якість і дотримання термінів. Якщо вам потрібна допомога — зв'яжіться з нами, оцінимо проєкт протягом дня. Отримайте консультацію з вашого проєкту.
Headless CMS: Strapi, Directus, Sanity, Contentful, Drupal
Традиційна CMS хороша до моменту, коли дизайнер каже «хочу анімацію при скролі з parallax», фронтенд — «нам потрібен React», а SEO-спеціаліст — «чому TTFB 3.4 секунди». У цей момент монолітна архітектура починає заважати всім одразу. Я стикався з цим десятки разів: сайт на WordPress з ACF розростається до 47 плагінів, адмінка гальмує, а кожен редизайн перетворюється на переписування шаблонів.
Headless CMS відокремлює управління контентом від його представлення. Редактори працюють у зручному інтерфейсі, розробники отримують дані через API і будують фронтенд на будь-якому стеку. Звучить просто. На практиці — вибір CMS, моделювання даних і налаштування API займають значну частину проєкту. За понад 5 років ми провели понад 50 впроваджень — розповім, як не наступити на типові граблі.
Чому headless CMS вигідніша за моноліт?
Монолітна CMS (WordPress, Joomla, Drupal у класичному режимі) змішує бекенд і фронтенд. Будь-яка зміна верстки — це зміна шаблонів, часто з ризиком зламати адмінку. Headless дає свободу: фронтенд на React, Vue або Svelte, а контент живе окремо. Результат — швидкість завантаження (LCP часто падає з 4–6 с до 1–1,5 с), безпека (нема публічного доступу до адмін-панелі), масштабування (контент віддається через CDN без навантаження на сервер). Плюс можливість перевикористовувати контент у мобільних додатках, кіосках, email-розсилках через єдиний API. На одному проєкті це заощадило 80 годин переробок і $4000 бюджету.
Яку headless CMS обрати під проєкт?
Нема універсального інструменту. Вибір залежить від команди, складності контенту та інфраструктури. Розберемо ключові варіанти.
Strapi — open-source, self-hosted, Node.js. Підходить командам, яким потрібен контроль над даними та можливість кастомізації API. Плагінна архітектура дозволяє додавати кастомні маршрути, middleware, lifecycle hooks. REST і GraphQL з коробки. Розгортається за годину — в 3 рази швидше за Drupal. Слабке місце — версії v4 та v5 несумісні між собою, міграція болюча. Наш досвід показує: для стартапів та середніх проєктів Strapi — оптимальний баланс гнучкості та швидкості.
Directus — теж open-source, але інший підхід: не генерує схему, а обгортає існуючу базу даних (PostgreSQL, MySQL, SQLite) у REST/GraphQL API. Якщо база даних вже є — Directus підключається до неї без міграцій. Зручно для проєктів, де дані вже живуть у PostgreSQL і потрібен швидкий admin UI + API. Економія часу на етапі інтеграції — до 30%.
Sanity — хмарна CMS з real-time редактором. Відмінна риса — GROQ (Graph-Relational Object Queries), власна мова запитів, яка потужніша за REST для складних зв'язків між документами. Portable Text для структурованого контенту. Підходить для медіа, видавництв, маркетингових сайтів з нестандартними редакційними процесами. Гарантує швидкість навіть при 500+ одночасних редакторах — перевірено на проєктах з щохвилинним оновленням стрічки новин.
Contentful — enterprise хмарна CMS. Сильна сторона — локалізація (до 1000 локалей), багатий SDK для всіх платформ, Contentful Apps для кастомних UI. Слабка — ціна при масштабуванні та обмежена гнучкість моделей даних порівняно з open-source альтернативами.
Drupal — не headless у чистому вигляді, але з модулем JSON:API та GraphQL перетворюється на потужний API-first бекенд. Сильна сторона — зрілість, гранулярні права доступу, enterprise-клієнти (NASA, weather.com). Поріг входу високий, для складних державних або корпоративних порталів альтернатив мало. Ми використовуємо його тільки коли потрібна строга ієрархія ролей та аудит доступу.
| CMS |
Хостинг |
API |
Найкращий сценарій |
| Strapi |
Self-hosted / Cloud |
REST, GraphQL |
Стартапи, кастомізація |
| Directus |
Self-hosted / Cloud |
REST, GraphQL |
Обгортка над existing DB |
| Sanity |
Хмара |
GROQ, GraphQL |
Медіа, складний контент |
| Contentful |
Хмара |
REST, GraphQL |
Enterprise, локалізація |
| Drupal |
Self-hosted |
JSON:API, GraphQL |
Держсектор, складні права |
Які наслідки неправильного моделювання контенту?
Моделювання контенту — критичний етап. Помилка на цьому етапі коштує дорого. Типова проблема: поле body типу rich text для всього. Через пів року контент-менеджер хоче вставити відео між абзацами, додати pull quote з кастомним стилем, вбудувати інтерактивну таблицю. Rich text це не дозволяє. Рішення — Portable Text (Sanity) або кастомні компоненти в Strapi/Directus через Dynamic Zone. Ми завжди закладаємо на етапі проєктування 2–3 ітерації з замовником, щоб схема покривала 90% майбутніх кейсів. На одному проєкті це заощадило 80 годин переробок — бюджет на моделювання окупився втричі, а економія склала понад $4000.
Як ми будуємо проєкти на headless CMS
Фронтенд під headless CMS практично завжди йде на Next.js (App Router) або Nuxt. Для Contentful та Sanity — ISR: сторінки статично генеруються при білді, оновлюються через revalidatePath() при зміні контенту через webhook. Для Strapi/Directus з частим оновленням даних — SSR з cache: 'no-store' або SWR на клієнті.
Кейс: редизайн корпоративного сайту виробничої компанії. Попередній сайт — WordPress з ACF, 200+ сторінок, 4 мови. Проблеми: TTFB 3,8 с, редактори скаржилися на повільну адмінку.
Перейшли на Strapi (self-hosted, PostgreSQL), Next.js App Router. Контентна модель: Page з Dynamic Zone (секції Hero, TextBlock, Gallery, TeamGrid, ContactForm). Локалізація через Strapi i18n plugin + next-intl на фронтенді. Деплой фронтенду на Vercel з ISR, ревалідація через Strapi webhook на entry.publish.
TTFB з 3,8 с впав до 180 мс (статика з CDN) — різниця в 21 раз. Редактори отримали чистий інтерфейс без 47 плагінів. Вартість хостингу знизилася на $200 на місяць — це економія $2400 на рік.
Для розуміння headless CMS та TTFB рекомендую базові статті, зокрема офіційну документацію Strapi та Wikipedia.
Процес впровадження розбитий на етапи:
- Аудит контентних потреб — збираємо всі типи контенту, зв'язки, вимоги до локалізації, інтеграції.
- Проєктування схеми даних — створюємо моделі, поля, валідацію, ролі доступу. Документуємо в Swagger/OpenAPI.
- Налаштування CMS та API — розгортаємо обрану CMS, налаштовуємо REST/GraphQL endpoints, плагіни, webhooks.
- Розробка фронтенду — підключаємо Next.js/Nuxt, налаштовуємо ISR/SSR, компоненти секцій, роутинг.
- Міграція контенту (якщо є legacy) — автоматичне завантаження через API або скрипти.
- Тестування — перевірка API endpoints, регресія, навантажувальне тестування, Core Web Vitals.
- Деплой — налаштування CDN, SSL, CI/CD, моніторинг.
Скільки часу займає впровадження?
Стандартний шлях включає всі етапи. Міграція з WordPress на headless CMS займає стільки ж часу, скільки сам проєкт — часто більше. Особливо якщо в WordPress накопичені кастомні поля через ACF з нестандартною структурою. Наші середні терміни:
| Тип проєкту |
Термін |
| Простий сайт на Strapi + Next.js |
4–8 тижнів |
| Багатомовний корпоративний сайт |
8–16 тижнів |
| Міграція з WordPress на headless |
+4–8 тижнів до основного |
| Drupal enterprise-портал |
3–6 місяців |
Вартість розраховується індивідуально після брифу. Економія на хостингу за рахунок статичної генерації — до 40% на місяць.
Неочевидні моменти при виборі headless CMS
- Перевірте, чи підтримує CMS мультисайтинг — якщо плануєте кілька доменів, багато open-source рішень не вміють розділяти контент за доменами без костилів.
- Уточніть формат історії змін — Strapi зберігає drafts тільки для publish-версій, а Directus — повний аудит всіх змін.
- Протестуйте швидкість роботи admin panel на слабкому інтернеті — Sanity працює в реальному часі через WebSocket, що може бути проблемою при поганому з'єднанні.
- Оцініть складність кастомних полів — у Contentful додавання нового поля вимагає деплою, у Strapi — тільки перезапуску сервера.
- Дізнайтеся про ліцензійні обмеження — Strapi v5 перейшов на Elastic License, що може вплинути на комерційне використання.
Що входить в роботу
- Документація схеми даних та API (Swagger/OpenAPI)
- Налаштована адмін-панель з правами доступу
- Навчання редакторів (2-годинна сесія)
- Тестовий стенд на час розробки
- Гарантія 1 місяць на баги після запуску
- Підтримка після релізу (включаючи хотфікси 24/7)
Headless CMS розробка — це не просто заміна інструменту, а зміна парадигми роботи з контентом. Ми допомагаємо зробити цей перехід без простоїв та втрати даних. Отримайте консультацію та попередню оцінку — залиште заявку на сайті. Замовте впровадження headless CMS з гарантією результату.