Налаштування Entry Types та Sections Craft CMS

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

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

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування Entry Types та Sections Craft CMS
Проста
від 1 робочого дня до 3 робочих днів
Часті питання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування Entry Types та Sections Craft CMS

Sections та Entry Types — фундамент структури контенту в Craft CMS. Неправильна архітектура на цьому рівні приводить до переробки через місяць. Розуміння різниці між типами Sections скорочує час проектування.

Типи Sections

Channel — колекція записів без ієрархії. Блог, новини, товари, вакансії. URL будується як /blog/{slug}.

Structure — ієрархічні сторінки з можливістю вложеності та ручної сортування. Документація, каталог із підкатегоріями. URL: /services/web-development/landing-pages.

Single — одна унікальна запис. Домашня сторінка, About, Contact. Немає slug, немає архіву.

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)

# 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 з вложеністю

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 — своє значення для групи сайтів

Налаштування 5–8 секцій із Entry Types займає 1–2 дні.