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

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

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

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

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

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

Мы настраивали архитектуру контента для десятков проектов на 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)
  • Настройка полей и переводов
  • Создание базовых шаблонов отображения
  • Документация по структуре контента
  • Поддержка после запуска

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

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060