Розробка кастомних колекцій та синглтонів Cockpit CMS
Collections та Singletons - два основні типи контенту в Cockpit. Collections для повторюваних записів (статті, товари), Singletons для унікальних наборів полів (параметри домашної сторінки, сторінка about).
Створення Collection через API
// Cockpit дозволяє створювати колекції через Admin UI або програмно
// POST /api/collections/createCollection
$collection = [
'name' => 'products',
'label' => 'Товари',
'fields' => [
['name' => 'title', 'type' => 'text', 'required' => true, 'label' => 'Назва'],
['name' => 'slug', 'type' => 'text', 'required' => true, 'slug' => true],
['name' => 'description', 'type' => 'wysiwyg', 'label' => 'Опис'],
['name' => 'price', 'type' => 'number', 'label' => 'Ціна'],
['name' => 'image', 'type' => 'asset', 'label' => 'Фото'],
['name' => 'gallery', 'type' => 'gallery', 'label' => 'Галерея'],
['name' => 'category', 'type' => 'collectionlink', 'link' => 'categories'],
['name' => 'published', 'type' => 'boolean', 'default' => false],
['name' => 'publishedAt', 'type' => 'date'],
],
'sortable' => true,
'in_menu' => true,
];
Типи полів Cockpit
| Тип | Опис |
|---|---|
text |
Рядок |
textarea |
Багаторядковий текст |
wysiwyg |
Редактор багатого тексту |
markdown |
Markdown |
number |
Число |
boolean |
Перемикач |
select |
Випадаючий список |
asset |
Файл/зображення |
gallery |
Галерея зображень |
date / time |
Дата/час |
color |
Палітра кольорів |
collectionlink |
Посилання на запис іншої колекції |
repeater |
Повторювані групи полів |
layout |
Конструктор блоків |
object |
JSON-об'єкт |
tags |
Теги (масив рядків) |
set |
Група полів |
Singleton
Singleton відрізняється від Collection тим, що зберігає один набір значень:
// Структура Singleton "homepage"
{
"fields": [
{ "name": "hero_title", "type": "text" },
{ "name": "hero_subtitle", "type": "textarea" },
{ "name": "hero_image", "type": "asset" },
{ "name": "featured_posts", "type": "collectionlink", "link": "posts", "multiple": true },
{ "name": "seo_title", "type": "text" },
{ "name": "seo_description", "type": "textarea" }
]
}
Використання Repeater для блоків контенту
Repeater дозволяє редактору додавати довільну кількість однотипних блоків:
{
"name": "features",
"type": "repeater",
"label": "Переваги",
"fields": [
{ "name": "icon", "type": "asset" },
{ "name": "title", "type": "text" },
{ "name": "description", "type": "textarea" }
]
}
Налаштування 3–5 колекцій із типовими полями та зв'язками займає 4–8 годин.







