logo

Extra Block Types (EBT) - New Layout Builder experienceâť—

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

âť—Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll
13/04/2025, by Ivan

Now let’s say we want to allow the site builder to enter some configuration for each instance of our custom block. Always keep in mind that all site-building configuration in Drupal 8 can be exported from a development site and imported into a live site (known as Configuration Management). As a module builder, you can also provide default configuration to pre-fill the form when a site builder creates a new block.

13/04/2025, by Ivan

Add the following method to the HelloBlock class. In this example, it's located in the src/Plugin/Block/HelloBlock.php file, but as you start thinking in a more OOP-oriented way, where it's physically located in the file structure is less important than the namespace. If you're a savvy OO programmer, you'll keep both closely aligned. But just in case, the namespace—very similar to the module's folder name and machine name from our earlier discussion—will be important later when you want to interact with your module’s code programmatically.

13/04/2025, by Ivan

To use block instance configuration, we can modify the build() method of the HelloBlock class:

/**
 * {@inheritdoc}
 */  
public function build() {
  $config = $this->getConfiguration();

  if (!empty($config['hello_block_name'])) {
    $name = $config['hello_block_name'];
  }
  else {
    $name = $this->t('to no one');
  }

  return [
    '#markup' => $this->t('Hello @name!', [
      '@name' => $name,
    ]),
  ];
}
13/04/2025, by Ivan

The module in Drupal 7 allows you to store code examples/snippets in a field. It comes with a custom field called "Snippets field" and displays three form elements: description, source code, and syntax highlighting mode (which programming language).

But now it's time to update the module to Drupal 8.

13/04/2025, by Ivan

Field types define the properties and behavior of fields. Field types are defined as plugins, so it is recommended to review the Plugin API before creating a new field type.

To create a field type in Drupal 8, you need a class with a @FieldType annotation.

Location of the field type class should be placed in MODULE_NAME/src/Plugin/Field/FieldType
Example: /modules/foo/src/Plugin/Field/FieldType/BazItem.php

13/04/2025, by Ivan

Field widgets are used to visualize a field within forms. Field widgets are defined as plugins, so it is recommended to review the Plugin API before writing a new field type.

To create a field widget in Drupal 8, you need a class with the @FieldWidget annotation.

Location of the field widget class should be /[MODULE_NAME]/src/Plugin/Field/FieldWidget. For example, /foo/src/Plugin/Field/FieldWidget/BarWidget.php.

13/04/2025, by Ivan

The field formatter module formats field data for viewing by the end user. Field formatters are defined as plugins, so it's recommended to review the Plugin API before writing a new field formatter.

Field Formatter Class

File: /modules/random/src/Plugin/Field/FieldFormatter/RandomDefaultFormatter.php