Custom Drupal Content Types Development

We often encounter a situation: a client complains that the standard content types – 'Article' and 'Basic page' – don't fit a product catalog with dozens of attributes. Storing everything in a single body field leads to chaos when rendering. Developing custom Drupal content types solves this – we cr

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1285
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    982
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    1033
  • image_website-sbh_0.webp
    Website development for SBH Partners
    1104
  • image_website-_0.webp
    Website development for Red Pear
    554

We often encounter a situation: a client complains that the standard content types – 'Article' and 'Basic page' – don't fit a product catalog with dozens of attributes. Storing everything in a single body field leads to chaos when rendering. Developing custom Drupal content types solves this – we create entities with a unique set of fields, editing forms, and display modes. Configuration is exported to YAML and stored in git, ensuring reproducibility and version control. With entity reference we reduce data duplication and save up to 40% of content update time. Our engineers have 10+ years of Drupal experience and have delivered over 50 projects with custom content types. Get a consultation to design the ideal structure.

According to the official Drupal documentation, "Entity API provides a set of classes and interfaces for managing entities."

How We Design Custom Drupal Content Types End-to-End

Let's take a real case: a job portal. We created a Vacancy type with fields:

  • City (string, required)
  • Salary from (decimal)
  • Salary to (decimal)
  • Direction (entity reference to taxonomy)
  • Requirements (text_long)

We configured the edit form: city as textfield, salary as range, direction as checkboxes. For the teaser display, we created a card with "City" and "Salary from" in one row. The entire process – from UI to configuration export – took half a day. If multiple types with relations are required (e.g., Case → Client, Case → Services), development can take 1–2 days. We always elaborate the field structure during the analysis phase to avoid N+1 queries. This reduces errors in queries by 25% and speeds up page loading by 30%. Using entity reference can cut database queries by an additional 50%.

// my_module.install function my_module_install(): void { $node_type = \Drupal\node\Entity\NodeType::create([ 'type' => 'case', 'name' => 'Case', 'description' => 'Company cases', 'display_submitted' => FALSE, 'new_revision' => TRUE, ]); $node_type->save(); // Reference field to client $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' => 'Client', 'settings' => [ 'handler' => 'default:node', 'handler_settings' => [ 'target_bundles' => ['client' => 'client'], ], ], ])->save(); // Configure form display \Drupal\Core\Entity\Entity\EntityFormDisplay::load('node.case.default') ->setComponent('field_client', [ 'type' => 'entity_reference_autocomplete', 'weight' => 10, ]) ->save(); } 

Scenarios Demanding Custom Drupal Content Types

Standard types don't cover the business logic requirements – for example, a product catalog with unique attributes, a portal with different entities (jobs, resumes, companies), or a multilingual site with varying field sets. Custom entity types in Drupal give you full control over the structure: you define fields, relations, displays, and permissions. This eliminates storing data in a single body field and simplifies maintenance.

Step-by-Step Creation of a Custom Content Type

Here's how we create a content type in Drupal from scratch:

  1. Define the machine name and label. For example, case for cases.
  2. Create the type via UI or code. In an install hook: NodeType::create().
  3. Add fields. Via FieldStorageConfig and FieldConfig – text, entity_reference, datetime, etc.
  4. Configure displays. EntityFormDisplay for forms, EntityViewDisplay for teaser and full.
  5. Export configuration. drush cex – all YAML files go into config/sync.
  6. Commit to git. Reproducibility across all environments.

Typical Fields and Their Configuration – Custom Content Type Development

Situation Field Type Example YAML Configuration
Short text string field_type: string
Long text/HTML text_long field_type: text_long
Integer number integer field_type: integer
Decimal number decimal settings: { precision: 10, scale: 2 }
Date datetime field_type: datetime
Entity reference entity_reference settings: { target_type: node }
Image image field_type: image
File file field_type: file
Boolean boolean field_type: boolean
List (select) list_string settings: { allowed_values: { 1: Option 1, 2: Option 2 } }

Why Entity Reference Is Better Than Simple Fields?

Reference fields allow linking entities without data duplication. For example, for the "Case" type we create a "Client" field (entity reference to the Client type) and a "Services" field (entity reference multiple to the Service type). Advantages:

  • Data is stored in one entity – update once.
  • Easy to build Views with relationships.
  • No need to duplicate selections from dropdown lists.

In typical scenarios (article-author relationship), entity reference eliminates duplication and simplifies updates. On one project, we replaced 5 text fields with reference fields, cutting content editing time by 35% and reducing maintenance costs. Database queries decreased by 30%, and page load speed improved by 40%. The cost for that project was $2,500.

The Development Process for Custom Content Types

We follow a transparent methodology:

Stage Duration Result
Analysis and requirements gathering 1–2 days Document with type and field structure
Design (fields, relations, templates) 1–2 days Entity schema, form mockups
Implementation (UI + code) 2–5 days Working types, configuration in YAML
Testing and review 1 day Check fields, Views, errors
Deployment and training 1 day Configuration deployment, editor instructions
Example complex case For a portal with 5 entity types and complex relationships (Case → Client, Case → Team, Case → Reviews) we designed a unified architecture that reduced time to market by 2 weeks. The total cost was $8,000.

What's Included in the Work

  • Development of the required number of custom content types.
  • Configuration of all needed field types (text, entity_reference, datetime, etc.).
  • Configuration of edit forms and display modes (teaser, default).
  • Export of configuration to YAML and integration into the build process.
  • Writing install hooks for reproducibility.
  • Documentation of the structure and editor training.
  • Code warranty – 6 months of support.

Timeline and Cost

Cost is calculated individually, depending on the number of types and field complexity. Approximate timeline: one simple type with UI fields – from 2 days ($500); multiple types with entity references and Views configuration – from 5 days ($1,500). Order custom Drupal content type development now – get a free consultation.

For more details about Content Types, read the official Drupal documentation.