Drupal is a registered trademark of Dries Buytaert
cms 2.1.3 Update released for Drupal core (2.1.3)! drupal 10.5.11 Update released for Drupal core (10.5.11)! drupal 11.3.11 Update released for Drupal core (11.3.11)! drupal 11.2.13 Update released for Drupal core (11.2.13)! drupal 10.6.10 Update released for Drupal core (10.6.10)! cms 2.1.2 Update released for Drupal core (2.1.2)! drupal 11.1.10 Update released for Drupal core (11.1.10)! drupal 10.5.10 Update released for Drupal core (10.5.10)! drupal 10.4.10 Update released for Drupal core (10.4.10)! drupal 11.2.12 Update released for Drupal core (11.2.12)! drupal 11.3.10 Update released for Drupal core (11.3.10)! drupal 10.6.9 Update released for Drupal core (10.6.9)! drupal 10.6.8 Update released for Drupal core (10.6.8)! drupal 11.3.9 Update released for Drupal core (11.3.9)! drupal 11.3.8 Update released for Drupal core (11.3.8)! 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)!

entity_route_context

419 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
10 months ago
Release cadence
Stability
100% stable

Releases

Version Type Release date
4.2.0 Stable Jul 24, 2025