Initial release of Moniki paid services site and CMS (v1.0.0).
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
import type { CollectionConfig } from 'payload'
|
||||
import { ADMIN_GROUP } from '../admin/groups'
|
||||
|
||||
export const Banners: CollectionConfig = {
|
||||
slug: 'banners',
|
||||
labels: { singular: 'Баннер', plural: 'Баннеры' },
|
||||
admin: {
|
||||
group: ADMIN_GROUP.content,
|
||||
useAsTitle: 'title',
|
||||
defaultColumns: ['title', 'sortOrder', 'isPublished', 'updatedAt'],
|
||||
description: 'Слайды главного баннера на главной странице. Порядок, тексты, кнопки, фото и видео задаются здесь.',
|
||||
},
|
||||
access: { read: () => true },
|
||||
defaultSort: 'sortOrder',
|
||||
fields: [
|
||||
{
|
||||
type: 'tabs',
|
||||
tabs: [
|
||||
{
|
||||
label: 'Текст',
|
||||
fields: [
|
||||
{ name: 'eyebrow', type: 'text', localized: true, label: 'Надзаголовок', admin: { description: 'Например, МОНИКИ' } },
|
||||
{ name: 'title', type: 'text', required: true, localized: true, label: 'Заголовок' },
|
||||
{ name: 'subtitle', type: 'textarea', localized: true, label: 'Подзаголовок' },
|
||||
{ name: 'phone', type: 'text', label: 'Телефон' },
|
||||
{ name: 'address', type: 'text', localized: true, label: 'Адрес' },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'Медиа',
|
||||
fields: [
|
||||
{
|
||||
name: 'image',
|
||||
type: 'upload',
|
||||
relationTo: 'media',
|
||||
label: 'Фото слайда',
|
||||
admin: { description: 'Постер, если есть видео, или основное изображение слайда.' },
|
||||
},
|
||||
{
|
||||
name: 'imageUrl',
|
||||
type: 'text',
|
||||
label: 'URL фото (если не загружено в медиа)',
|
||||
admin: { description: 'Например /hero/diagnostics.jpg' },
|
||||
},
|
||||
{ name: 'imageAlt', type: 'text', localized: true, label: 'Alt фото' },
|
||||
{
|
||||
name: 'video',
|
||||
type: 'upload',
|
||||
relationTo: 'media',
|
||||
label: 'Видео слайда',
|
||||
admin: { description: 'Если задано, на слайде показывается видео. Запускается по клику.' },
|
||||
},
|
||||
{
|
||||
name: 'videoUrl',
|
||||
type: 'text',
|
||||
label: 'URL видео (если не загружено в медиа)',
|
||||
admin: { description: 'Например /hero/250-white.mp4' },
|
||||
},
|
||||
{
|
||||
name: 'background',
|
||||
type: 'upload',
|
||||
relationTo: 'media',
|
||||
label: 'Фон организации',
|
||||
admin: { description: 'Размытый фон секции. Если пусто — используется фото здания МОНИКИ.' },
|
||||
},
|
||||
{
|
||||
name: 'backgroundUrl',
|
||||
type: 'text',
|
||||
label: 'URL фона (если не загружено в медиа)',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'Кнопки',
|
||||
fields: [
|
||||
{ name: 'ctaPrimaryLabel', type: 'text', localized: true, label: 'Основная кнопка' },
|
||||
{ name: 'ctaPrimaryHref', type: 'text', label: 'Ссылка основной кнопки' },
|
||||
{ name: 'ctaSecondaryLabel', type: 'text', localized: true, label: 'Вторая кнопка' },
|
||||
{ name: 'ctaSecondaryHref', type: 'text', label: 'Ссылка второй кнопки' },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'Показ',
|
||||
fields: [
|
||||
{ name: 'slug', type: 'text', required: true, unique: true, label: 'Символьный код' },
|
||||
{ name: 'sortOrder', type: 'number', defaultValue: 0, label: 'Порядок' },
|
||||
{
|
||||
name: 'durationMs',
|
||||
type: 'number',
|
||||
defaultValue: 7000,
|
||||
label: 'Время показа (мс)',
|
||||
admin: { description: 'Автопереключение слайда, 5000–12000' },
|
||||
},
|
||||
{ name: 'isPublished', type: 'checkbox', defaultValue: true, label: 'Опубликован' },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
Reference in New Issue
Block a user