Типы контента — главная фишка любой современной CMS. Но объясняют их редко. Из-за этого одни сайты выглядят как «каша из записей», а другие — как профессиональные каталоги с фильтрами и связями. Разберём, что это и зачем.
Проблема обычной CMS
В большинстве CMS есть «записи» и «страницы». Всё. Любой контент — это запись. Врач, товар, услуга, объект недвижимости — всё лежит в одной таблице с одинаковыми полями: заголовок, текст, картинка.
Что делать, если у товара должна быть цена, у врача — специальность, у объекта — количество комнат? Использовать один и тот же набор полей для всего — боль.
Что такое «тип контента»
Тип контента — это сущность со своим набором полей и своими правилами. Примеры:
- Тип «Услуга» — поля: цена, длительность, описание
- Тип «Врач» — поля: ФИО, специальность, стаж, фото
- Тип «Объект» — поля: адрес, площадь, комнаты, цена
- Тип «Статья» — поля: содержание, категория, теги
У каждого типа — своя форма в админке, свой список в таблице, свои URL на сайте.
Зачем это нужно
1. Чистота данных
У каждого поля есть тип: число, строка, дата, картинка. Врача нельзя случайно сохранить без специальности, а цену услуги — без цифры.
2. Правильная структура URL
Тип «Врач» → URL /doctors/ivanov/. Тип «Услуга» → /uslugi/zamena-masla/. Автоматически, без ручного управления ссылками.
3. Разные шаблоны вывода
Карточка товара в списке выглядит иначе, чем карточка врача. Тип контента позволяет задать для каждого свой шаблон.
4. Фильтры и связи
Можно фильтровать врачей по специальности, товары по категории, услуги по цене. Плюс — связывать: «этот врач делает эти услуги», «в этом объекте эти материалы».
5. SEO
У каждого типа контента — свой шаблон мета-тегов. Плюс — можно применить Schema.org: товар → Product, врач → Physician, статья → BlogPosting.
Как это устроено технически
Внутри — четыре таблицы:
content_types— какие типы есть (Услуга, Врач, Объект...)content_fields— какие поля у каждого типаcontent_items— сами записи (данные в JSON-поле)taxonomies+taxonomy_terms— категории и теги
Данные записи хранятся в JSON — это позволяет добавлять новые поля без ALTER TABLE.
Чем отличается от WordPress
В WordPress тоже есть похожая концепция — Custom Post Types (CPT). Но:
- CPT нужно регистрировать кодом в
functions.php - Поля добавляются отдельным плагином (ACF или Meta Box)
- Внешний вид в админке ограничен
В CMS с «встроенными» типами контента всё делается через админку — без кода и без плагинов.
Пример: сайт клиники
Задача — сайт медицинской клиники. Типы контента:
| Тип | Поля | URL |
|---|---|---|
| Врач | ФИО, специальность, стаж, фото, описание | /doctors/ivanov/ |
| Услуга | Название, цена, длительность, описание | /uslugi/konsultaciya/ |
| Кабинет | Номер, этаж, оборудование, фото | /kabinety/1/ |
Плюс связи: врач → его услуги. Всё доступно без единой строчки кода, из админки.
Что выбрать для своего проекта
Если ты делаешь сайт на заказ и хочешь клиенту показать «не WordPress, а что-то серьёзное» — типы контента это первое, что стоит освоить. Они позволяют собирать сайты под любую нишу за часы, а не дни.
Kuznya CMS — одна из CMS, где типы контента встроены в ядро, а не приделаны плагином.