environment_context
Environment Context provides a robust way to detect and act on the current runtime environment (e.g. development, staging, production) in Drupal. It integrates deeply with Drupalβs context, condition, and caching systems.
β Features
- Detects the current environment via:
settings.php- Environment variables (
DRUPAL_ENVIRONMENT) - Pluggable event-based detection
- Provides a Context Provider for environment
- Adds a Condition Plugin to use environment in:
- Block visibility
- Layout Builder
- Other context-aware systems
- Defines an
environmentTyped Data plugin for strong typing - Adds an
environmentCache Context to vary content by environment - Easily extendable: other modules can register environments or override detection
βοΈ How it works
The module dispatches events to determine the current environment and all known environments. This makes detection and registration extensible without hardcoding logic in one place.
It provides:
- A context provider plugin:
EnvironmentContext - A condition plugin:
EnvironmentCondition - A typed data plugin:
Environment - A cache context plugin:
environment
You can use these in block visibility, service injections, or even configuration splits.
π¦ Installation
composer require drupal/environment_context drush en environment_context
This module has no UI β it works behind the scenes and via developer APIs.
π Example Usage
Get the current environment in a service:
$env = \Drupal::service('environment_context.context.environment')->getCurrentEnvironment();React to specific environments:
if ($env === 'production') { // Do something only on production }
Define environments via event listener:
$event->addEnvironment('production', ['label' => 'Production']);Add an environment condition to a block:
- Use the "Current environment" condition in block visibility settings
- Select one or more matching environments
π Requirements
- Drupal 10 or 11
- No external dependencies
π§© Related Projects
- Config Split β often used alongside to manage config per environment
- Environment Indicator β UI decoration for environments
- Sites β Supports environment based site settings
π¬ Feedback & Contributions
Contributions, feature requests, and bug reports are welcome via the issue queue.