Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: OpenID Connect / OAuth client 3.0.0-alpha9 New alpha version released for module openid_connect (3.0.0-alpha9). Release: Timelinr 1.0.1 Minor update available for module timelinr (1.0.1). Usage Milestone: Views Reference Filter Module entityreference_filter crossed 10,000 active installs. Usage Milestone: Dropdown Language Module dropdown_language crossed 10,000 active installs. Usage Milestone: Paragraphs Browser Module paragraphs_browser crossed 10,000 active installs. Usage Milestone: OpenAPI Module openapi crossed 10,000 active installs. Usage Milestone: Decoupled Router Module decoupled_router crossed 10,000 active installs. Usage Milestone: Time Field for Drupal 8+ Module time_field crossed 10,000 active installs. Usage Milestone: Devel PHP Module devel_php crossed 10,000 active installs. Module Revived: Entityqueue Buttons 1.1.2 Module entityqueue_buttons updated after 8 months of inactivity (1.1.2).

Block plugin view builder

166 sites Security covered Drupal 10–11
View on drupal.org

This module allows developers to render block plugins directly without relying on block content entities. It ensures blocks are properly cached, considering metadata and contexts, which improves the effectiveness of page caching. This functionality is useful for programmatically displaying custom block logic.

Summary

The Block plugin view builder module allows developers to programmatically render (view) block plugins without the need for the wrapping BlockContent entity. This module is an adaptation of the core BlockViewBuilder and makes sure that:

  • Each block gets a cache key, so it can be cached in the render cache
  • Cacheable metadata (including access metadata) is taken into account
  • Block plugins get a lazybuilder callback so they can be correctly placeholdered
  • Context-aware block plugins are supported by passing explicit contexts

This all results in better leveraging of the (dynamic) page cache.

Note: This module does not aim to implement rendering or viewing of BlockContent blocks as these should best be viewed using the core BlockViewBuilder.

How to use

Basic usage:

$blockPluginViewBuilder = \Drupal::service('block_plugin.view_builder');
// Pass optional configuration.
$configuration = [];
$build = $blockPluginViewBuilder->view('plugin_id', $configuration);

With contexts (for context-aware block plugins):

use Drupal\Core\Plugin\Context\Context;
use Drupal\Core\Plugin\Context\EntityContextDefinition;

$blockPluginViewBuilder = \Drupal::service('block_plugin.view_builder');
$build = $blockPluginViewBuilder->view('plugin_id', [], [
    'node' => new Context(new EntityContextDefinition('entity:node'), $node),
]);

Supported context types:

  • Entity contexts (entity:node, entity:user, etc.) — stored as entity type + ID and reloaded safely in the lazy builder.
  • Scalar contexts (string, integer, etc.) — passed through as-is via JSON.

Requirements

  • PHP 8.1+
  • Drupal 10 or 11

Roadmap

  • Notify other contributed modules that are rendering block plugins of the existence of this project (eg. Block field, Twig tweak, Panels, ...)

Depends on

Dependencies of the latest stable release

No dependencies recorded for this project.

Required by

1 tracked project depends on this one

Activity

Tracked releases
2
Tracked since
Feb 2025
Latest release
4 months ago
Releases (12 mo)
1
Maintenance
Active

Releases

Version Type Core Release date
1.0.6 Stable 10–11 Apr 13, 2026
1.0.5 Stable 8–11 Feb 13, 2025