Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

entity_route_context

398 sites Security covered
View on drupal.org

'Node from URL', but for the rest of us.

This project provides a service and context to determine if the current route match is owned by a particular entity type, by way of link templates.

A context is also provided for plugins and other to consume. For example you may want to create a block, or DsField, that relies on a particular entity from the route. It operates similar to the node.node_route_context context, but in an entity type agnostic way. Entity type specific contexts are also available in case a plugin is designed to take any entity type, but as a site builder you may choose for it to respond to a particular entity type.

Ideally this feature would be added to core in #3138465: Add a generic entity route context

Plugin context example

For example you may have the following block definition:

#[Block(
  id: 'test_block',
  context_definitions: [
    'entity_test_1' => new EntityContextDefinition(data_type: 'entity', label: new TranslatableMarkup('Entity Test 1'), required: TRUE),
  ],
)]

In this case, the generic entity context and entity-type specific contexts will be made available for configuration. See screenshot.

If you choose the generic entity context then if you are on any entity type route then the entity will be provided to the block. If you choose an entity type context such as 'Content from route' (aka Node) then the block will only display if you are on a node.

If a block is designed to work with only a specific entity type, e.g nodes, then you can provide a definition such as:

#[Block(
  id: 'test_block',
  context_definitions: [
    'entity' => new EntityContextDefinition(data_type: 'entity:node', label: new TranslatableMarkup('Entity'), required: TRUE),
  ],
)]

In this case, only the generic entity context and the 'Content from route' context will be made available. And each will only respond on Node routes. See screenshot.

V4 is compatible with Drupal 10.x, and is compatible with previous major versions.
V3 is compatible with Drupal 9.x, and is compatible with previous major versions.

Activity

Total releases
1
First release
Jul 2025
Latest release
8 months ago
Release cadence
Stability
100% stable

Releases

Version Type Release date
4.2.0 Stable Jul 24, 2025