Creating Custom Content Types Programmatically in Drupal 10

Content types are the backbone of content management in Drupal. In Drupal 10, you can create custom content types to structure and organize your content. This blog post will guide you through the process of creating content types programmatically in Drupal 10, allowing you to tailor your website's content structure to your specific needs.

Prerequisites

Before creating custom content types programmatically in Drupal 10, you should have the following:

  1. A working Drupal 10 or 9 website.
  2. Basic knowledge of Drupal site building and module development.
  3. Familiarity with PHP and Drupal's module structure.

Step 1: Define the Custom Module

To create a custom content type programmatically, you need to place the code in a custom module. If you don't already have a custom module, you can create one by following these steps:

  1. In your Drupal installation, navigate to the sites/all/modules directory (or your preferred module location).
  2. Create a new directory for your custom module. Give it a unique and descriptive name, such as my_custom_content_type.
  3. Inside your module directory, create a my_custom_content_type.info.yml file with the following content:
name: 'My Custom Content Type Module'
type: module
description: 'Defines custom content types programmatically.'
core_version_requirement: ^9 || ^10
package: Custom
dependencies:
  - node

This YAML file defines the basic information about your custom module.

Step 2: Create a Custom Content Type

To create a custom content type, you'll need to implement the hook_entity_type_build and hook_node_type_insert hooks within your custom module.

  1. Create a file named my_custom_content_type.module in your module directory.
  2. In this file, implement the hook_entity_type_build hook to define your custom content type. Here's an example:
/**
 * Implements hook_entity_type_build().
 */
function my_custom_content_type_entity_type_build(array &$entity_types) {
  $entity_types['node']->setClass('Drupal\my_custom_content_type\NodeTypeCustom');
}

This code defines a custom class, NodeTypeCustom, to handle the configuration of your custom content type.

  1. Create the NodeTypeCustom class in a file named NodeTypeCustom.php and place it in your module's directory:
namespace Drupal\my_custom_content_type;

use Drupal\node\NodeTypeBase;

/**
 * Provides a custom content type.
 */
class NodeTypeCustom extends NodeTypeBase {

  /**
   * {@inheritdoc}
   */
  public function postSave(NodeTypeInterface $node_type) {
    parent::postSave($node_type);

    // Define the custom content type settings.
    $config = \Drupal::configFactory()->getEditable('node.type.' . $node_type->id());
    $config->set('name', 'Custom Content Type');
    $config->set('description', 'A custom content type created programmatically.');
    $config->set('new_revision', TRUE);
    $config->save();
  }
}

n the NodeTypeCustom class, we extend the NodeTypeBase class to define the custom content type settings, such as the name and description.

Step 3: Enable and Verify Your Custom Content Type

  1. In your Drupal admin interface, navigate to Extend (admin/modules) and enable your custom module, "My Custom Content Type Module."
  2. After enabling the module, go to Structure > Content types (admin/structure/types) to see your custom content type listed as "Custom Content Type."

Conclusion

Creating custom content types programmatically in Drupal 10 allows you to define content structures that fit your specific project requirements. By following the steps outlined in this blog post, you can easily create and configure custom content types within your Drupal website, providing a flexible and tailored content management experience.

In Drupal 9 and 10, custom modules should be stored in the "modules/custom" directory rather than "sites/all/modules." Drupal's module directory structure has evolved, and the recommended practice is to place custom modules in the "modules/custom" directory to follow the modern Drupal standards.

So, if you're creating a custom module in Drupal 9 or 10, you should place it in the following directory:

/sites/all/modules/custom/

By following this structure, your custom modules will be more organized and adhere to Drupal's best practices, making it easier to manage and maintain your site's codebase.

Share on social media

Comment

Permalink

Clear advice on how to sell products on amazon should compare fulfillment options, explain seller fees, and show how product economics change under different assumptions. Restricted products and intellectual property issues deserve early attention because a promising item is not useful if it cannot be listed compliantly. A cautious launch protects cash while generating useful evidence.

Permalink

People comparing ai girlfriend should consider whether memory can be corrected or deleted, how billing works, and which features require additional credits. Customization is more meaningful when personality, appearance, tone, boundaries, and memory can be adjusted without rebuilding the character. A trustworthy review describes limitations openly instead of promising perfect memory, unlimited features, or genuinely human understanding.

Permalink

Anyone considering buy tiktok likes should compare delivery speed, retention, refill terms, privacy practices, payment security, and recent independent feedback. Secure checkout, recognizable billing details, receipts, dispute procedures, and responsive support matter as much as the listed payment method. Organic growth still depends on the video itself, even if a paid service changes the visible like count.

Permalink

A practical guide to how to sell on amazon should explain account setup, product selection, sourcing, listing creation, and order fulfillment in a clear sequence. A polished listing still needs accurate claims, clear images, relevant search terms, and inventory that can be replenished without tying up all available cash. Visible risks are easier to understand and manage.

Permalink

For users planning to buy tiktok likes, price should be weighed against retention, privacy, support quality, delivery controls, and the credibility of customer reviews. Purchased metrics cannot replace content quality, audience research, consistent posting, useful hooks, and genuine interaction with viewers. Clear service terms make value easier to judge without relying on unsupported claims about quality, safety, or future performance.

Permalink
Permalink

Нужен алкоголь? доставка алкоголя 24 часа Омск удобный способ выбрать напитки для праздника, вечеринки или семейного торжества. Ознакомьтесь с ассортиментом, сравните цены и условия заказа, узнайте о доступных вариантах получения продукции и особенностях обслуживания.

Permalink

п»їbuy accutane online or generic isotretinoin tablets accutane for sale online
http://mobielewebsite.inmotiv.nl/16915/?referer=http://dermatretdirect… buy legit accutane online or http://asresin.cn/home.php?mod=space&uid=1314170 isotretinoin online prescription free
order isotretinoin capsules buy cystic acne medication accutane or order isotretinoin capsules п»їbuy accutane online

Permalink

Нужен юрист? бесплатная юридическая помощь населению в Ярославле - отличная возможность получить помощь опытных правозащитников в любой области права: семейные споры, долги и кредиты, недвижимость, трудовые конфликты, защита прав потребителей и многое другое. Задайте вопрос юристу онлайн или обратитесь по телефону горячей линии из любого региона России. Консультация доступна круглосуточно и без регистрации.

Add new comment