Настройка Entry Types и Sections Craft CMS: архитектура контента

Мы настраивали архитектуру контента для десятков проектов на Craft CMS и знаем, как избежать переработок. Неправильный выбор типа Section или Entry Type приводит к тому, что через месяц приходится переделывать структуру URL, шаблоны и миграции. Например, если изначально выбрали Channel для каталога

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка Entry Types и Sections Craft CMS: архитектура контента
Простой
от 1 дня до 3 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    982
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Мы настраивали архитектуру контента для десятков проектов на Craft CMS и знаем, как избежать переработок. Неправильный выбор типа Section или Entry Type приводит к тому, что через месяц приходится переделывать структуру URL, шаблоны и миграции. Например, если изначально выбрали Channel для каталога товаров, а потом понадобилась иерархия (категории глубиной 3 уровня), придётся менять тип на Structure, переносить все записи, настраивать редиректы со старых URL на новые. Это часы работы и риски для SEO. Понимание разницы между типами Sections сокращает время проектирования и упрощает поддержку.

Обратитесь к нам — мы гарантируем правильную конфигурацию с учётом всех нюансов вашего проекта.

Типы Sections

Тип Section Характеристика Пример использования
Channel Коллекция записей без иерархии Блог, новости, отзывы
Structure Иерархические страницы, ручная сортировка Документация, каталог с подкатегориями
Single Одна уникальная запись, без slug Homepage, About, Contact

Channel — коллекция записей без иерархии. Блог, новости, товары, вакансии. URL строится как /blog/{slug}. Идеален для ленты однотипного контента. Внутри можно использовать разные Entry Types — например, для статей и подкастов.

Structure — иерархические страницы с возможностью вложенности и ручной сортировки. Документация, каталог с подкатегориями. URL: /services/web-development/landing-pages. Structure лучше Channel, когда нужна вложенность — например, для каталога товаров с подкатегориями глубиной до 3 уровней. При этом запросы к дереву могут стать узким местом — используйте кэширование или level() в Twig для ограничения выборки.

Single — одна уникальная запись. Homepage, About, Contact. Нет slug, нет архива. Используется для статичных страниц. Обратите внимание: если потребуется несколько версий (например, страница для каждого сайта в мультисайтовом режиме), используйте Section типа Structure с одной записью — это даст больше гибкости.

Как выбрать тип Section?

Выбор зависит от характера контента. Для плоских коллекций используйте Channel, для иерархий — Structure, для уникальных страниц — Single. Если сомневаетесь, начните с Channel — это самый гибкий вариант, который легко расширить при необходимости. Но помните: миграция с Channel на Structure трудоёмка, поэтому лучше сразу продумать возможное усложнение структуры.

Что такое Entry Types и как их настраивать?

Каждый Section может иметь несколько Entry Types с разными наборами полей. Это позволяет гибко управлять контентом разных форматов в одной секции. Пример для Section Blog:

Section: blog (Channel) ├── Entry Type: article │ └── Fields: body (Matrix), readingTime (calculated), podcast (false) ├── Entry Type: podcast │ └── Fields: audioFile (Asset), transcript (Redactor), duration (Number) └── Entry Type: video └── Fields: videoUrl (URL), thumbnail (Asset), youtubeId (computed) 

В Twig разделяем отображение по типу:

{% switch entry.type.handle %} {% case 'article' %} {% include '_blog/_article' %} {% case 'podcast' %} {% include '_blog/_podcast' %} {% case 'video' %} {% include '_blog/_video' %} {% endswitch %} 

Как настроить Project Config для секций?

Используйте YAML-файлы для конфигурации секций — это упрощает развёртывание и контроль версий. Обратитесь к официальной документации Project Config. Пример для блога:

# config/project/sections/blog.yaml name: Blog handle: blog type: channel enableVersioning: true defaultPlacement: end propagationMethod: all siteSettings: default: hasUrls: true uriFormat: 'blog/{slug}' template: blog/_entry enabledByDefault: true entryTypes: article: name: Article handle: article hasTitleField: true titleTranslationMethod: site fieldLayout: - type: craft\fieldlayoutelements\TitleField - type: craft\fieldlayoutelements\CustomField fieldUid: [uid-of-body-field] - type: craft\fieldlayoutelements\CustomField fieldUid: [uid-of-categories-field] 

Как настроить Structure с вложенностью?

Для Structure укажите maxLevels, чтобы ограничить глубину. Например, для трёхуровневого каталога:

Section: services (Structure) ├── maxLevels: 3 ├── enableVersioning: true └── defaultSort: structure (ручная сортировка в дереве) 

Запрос дочерних элементов:

{# Получить всех потомков текущей страницы #} {% set children = craft.entries() .section('services') .descendantOf(entry) .level(entry.level + 1) .orderBy('lft asc') .all() %} 

Как настроить переводы для секций?

При мультисайтовости важно правильно настроить translationMethod:

Метод Описание Пример
none Единое значение для всех сайтов Название бренда
site Своё значение для каждого сайта Название товара
language Своё значение для каждого языка Текст на языке
siteGroup Своё значение для группы сайтов Региональные настройки

Выбор метода зависит от сценария. Например, для поля "название товара" используйте site, если товар локализован, или none, если название общее для всех языков.

Практический приём: кэширование структуры Чтобы избежать N+1 запросов при рендеринге дерева, используйте {% cache %} или предзагрузку записей с помощью with(). Для больших каталогов (1000+ записей) рассмотрите Elasticsearch или Meilisearch для полнотекстового поиска.

Почему стоит заказать настройку секций у нас?

Наш опыт — 5+ лет разработки на Craft CMS, более 50 успешных проектов. Мы используем проверенные конфигурации, гарантируем стабильность и производительность. Настройка 5–8 секций с Entry Types занимает 1–2 дня. Для комплексной архитектуры контента свяжитесь с нами — мы оценим ваш проект за 1 день.

Что входит в настройку?

  • Разработка архитектуры Sections и Entry Types
  • Конфигурация Project Config (YAML)
  • Настройка полей и переводов
  • Создание базовых шаблонов отображения
  • Документация по структуре контента
  • Поддержка после запуска

Получите консультацию по вашему проекту — мы подберём оптимальную архитектуру.