Розробка кастомних типів контенту Drupal під ключ

Часто зустрічаємо ситуацію: замовник скаржиться, що стандартні типи — 'Стаття' та 'Основна сторінка' — не підходять для каталогу продукції з десятками атрибутів. Доводиться зберігати все в одному полі body, що призводить до хаосу при виведенні. Розробка кастомних типів контенту Drupal вирішує цю про

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка кастомних типів контенту Drupal під ключ
Простий
від 1 дня до 3 днів

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

Часті запитання

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

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

Часто зустрічаємо ситуацію: замовник скаржиться, що стандартні типи — 'Стаття' та 'Основна сторінка' — не підходять для каталогу продукції з десятками атрибутів. Доводиться зберігати все в одному полі body, що призводить до хаосу при виведенні. Розробка кастомних типів контенту Drupal вирішує цю проблему — ми створюємо сутності з унікальним набором полів, форм редагування та відображень. Конфігурація експортується в YAML і зберігається в git, гарантуючи відтворюваність та контроль версій. Завдяки entity reference ми скорочуємо дублювання даних і економимо до 40% часу на оновленні контенту. Наші інженери мають 10+ років досвіду в Drupal і реалізували понад 50 проектів з кастомними типами контенту. Отримайте консультацію, щоб спроектувати ідеальну структуру.

За даними офіційної документації Drupal, "Entity API provides a set of classes and interfaces for managing entities."

Як ми проектуємо кастомні типи контенту Drupal під ключ?

Візьмемо реальний кейс: портал вакансій. Створили тип Vacancy з полями:

  • Місто (string, обов'язкове)
  • Зарплата від (decimal)
  • Зарплата до (decimal)
  • Напрямок (entity reference до таксономії)
  • Вимоги (text_long)

Налаштували форму редагування: місто — textfield, зарплата — range, напрямок — checkboxes. Для виду teaser зробили картку з полями "Місто" та "Зарплата від" в один рядок. Весь процес — від UI до експорту конфігурації — зайняв пів дня. Якщо потрібно кілька типів зі зв'язками (наприклад, Кейс → Клієнт, Кейс → Послуги), розробка може зайняти 1–2 дні. Ми завжди опрацьовуємо структуру полів на етапі аналітики, щоб уникнути N+1 запитів. Це знижує кількість помилок при вибірках на 25% і прискорює завантаження сторінок на 30%. Використання entity reference дозволяє зменшити кількість запитів до бази ще на 50%.

// my_module.install function my_module_install(): void { $node_type = \Drupal\node\Entity\NodeType::create([ 'type' => 'case', 'name' => 'Кейс', 'description' => 'Кейси компанії', 'display_submitted' => FALSE, 'new_revision' => TRUE, ]); $node_type->save(); // Поле посилання на клієнта $client_storage = \Drupal\field\Entity\FieldStorageConfig::create([ 'field_name' => 'field_client', 'entity_type' => 'node', 'type' => 'entity_reference', 'settings' => ['target_type' => 'node'], ]); $client_storage->save(); \Drupal\field\Entity\FieldConfig::create([ 'field_storage' => $client_storage, 'bundle' => 'case', 'label' => 'Клієнт', 'settings' => [ 'handler' => 'default:node', 'handler_settings' => [ 'target_bundles' => ['client' => 'client'], ], ], ])->save(); // Налаштування форми відображення \Drupal\Core\Entity\Entity\EntityFormDisplay::load('node.case.default') ->setComponent('field_client', [ 'type' => 'entity_reference_autocomplete', 'weight' => 10, ]) ->save(); } 

Коли варто створювати кастомні типи контенту Drupal?

Якщо стандартні типи не покривають вимоги бізнес-логіки — наприклад, для каталогу продукції з унікальними атрибутами, для порталу з різними сутностями (вакансії, резюме, компанії) або для багатомовного сайту з різними наборами полів. Користувацькі типи сутностей Drupal дають повний контроль над структурою: ви задаєте поля, зв'язки, відображення та права доступу. Це виключає зберігання даних в одному тілі та спрощує підтримку.

Покрокове створення кастомного типу контенту

Ось як ми створюємо тип контенту в Drupal з нуля:

  1. Визначте машинне ім'я та мітку. Наприклад, case для кейсів.
  2. Створіть тип через UI або код. У install-хуці: NodeType::create().
  3. Додайте поля. Через FieldStorageConfig та FieldConfig — text, entity_reference, datetime і т.д.
  4. Налаштуйте відображення. EntityFormDisplay для форми, EntityViewDisplay для teaser та full.
  5. Експортуйте конфігурацію. drush cex — всі YAML-файли потрапляють до config/sync.
  6. Закомітьте у git. Відтворюваність на всіх оточеннях.

Типові поля та їх налаштування — розробка кастомних типів

Ситуація Тип поля Приклад конфігурації YAML
Короткий текст string field_type: string
Довгий текст/HTML text_long field_type: text_long
Число ціле integer field_type: integer
Дробове число decimal settings: { precision: 10, scale: 2 }
Дата datetime field_type: datetime
Посилання на сутність entity_reference settings: { target_type: node }
Зображення image field_type: image
Файл file field_type: file
Булеве boolean field_type: boolean
Список (select) list_string settings: { allowed_values: { 1: Опція 1, 2: Опція 2 } }

Чому entity reference краще простих полів?

Референс-поля дозволяють зв'язувати сутності без дублювання даних. Наприклад, для типу "Кейс" ми створюємо поле "Клієнт" (entity reference на тип Client) та поле "Послуги" (entity reference multiple на тип Service). Переваги:

  • Дані зберігаються в одній сутності — оновлюєте один раз.
  • Легко будувати Views з відношеннями.
  • Не потрібно дублювати вибір з випадаючих списків.

При типових сценаріях (зв'язок стаття-автор) entity reference виключає дублювання та полегшує оновлення. На одному проекті ми замінили 5 текстових полів на референс-поля, що скоротило час редагування контенту на 35% та знизило витрати на підтримку. В результаті кількість запитів до БД зменшилася на 30%, а швидкість завантаження сторінок зросла на 40%.

Процес розробки кастомних типів контенту

Ми працюємо за прозорою методологією:

Етап Тривалість Результат
Аналітика та збір вимог 1–2 дні Документ зі структурою типів та полів
Проектування (поля, зв'язки, шаблони) 1–2 дні Схема сутностей, макети форм
Реалізація (UI + код) 2–5 днів Робочі типи, конфігурація в YAML
Тестування та рев'ю 1 день Перевірка полів, Views, помилок
Деплой та навчання 1 день Деплой конфігурації, інструкція редакторам
Приклад складного кейсу Для порталу з 5 типами сутностей та складними зв'язками (Кейс → Клієнт, Кейс → Команда, Кейс → Відгуки) ми розробили єдину архітектуру, яка скоротила час виведення на ринок на 2 тижні.

Що входить в роботу

  • Розробка необхідної кількості кастомних типів контенту.
  • Налаштування полів всіх необхідних типів (text, entity_reference, datetime тощо).
  • Налаштування форм редагування та видів відображення (teaser, default).
  • Експорт конфігурації в YAML та інтеграція в процес збірки.
  • Написання install-хуків для відтворюваності.
  • Документування структури та навчання редакторів.
  • Гарантія на код — 6 місяців підтримки.

Терміни та вартість

Вартість розраховується індивідуально, залежно від кількості типів та складності полів. Орієнтовно: один простий тип з полями через UI — від 2 днів; кілька типів з entity reference та налаштуванням Views — від 5 днів. Замовте розробку кастомних типів контенту Drupal прямо зараз — отримайте консультацію безкоштовно.

Більш детально про Content Types читайте в офіційній документації Drupal.