Разработка кастомных коллекций и синглтонов Cockpit CMS
Collections и Singletons — два основных типа контента в Cockpit. Collections — для повторяющихся записей (статьи, товары), Singletons — для уникальных наборов полей (homepage settings, about page).
Создание 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 |
Rich text редактор |
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 часов.







