Sites allows a single Drupal installation to function as a multi-site platform, where each "site" is defined by a plugin and has its own scoped content, configuration, URLs, permissions, and language. This approach avoids the complexity of multiple Drupal instances or traditional shared-file multisite setups.
Sites turns a single Drupal installation into a multi-site platform. Each "site" is a plugin-defined context that scopes content, configuration, URL generation, permissions, and language — all within one codebase and database. No separate Drupal instances, no shared-files multisite complexity.
Features
- Plugin-based site definitions — implement a lightweight PHP class to define a site's identity and rules
- Per-site configuration overrides — different settings, language, and appearance per site context
- Site-scoped content access control — readers and editors only see the content that belongs to their site
- Site-aware URL generation — links are automatically scoped to the active site's domain or path prefix
- Cache context integration — built-in
sitecache context keeps pages correct and fast across site boundaries - Submodules for common patterns: path prefixes, path aliases, Pathauto, language negotiation, ECA integration, and a frontend preview switcher
Requirements
- Drupal 11 or 12
- Environment Context
Getting started
Install with Composer:
composer require drupal/sites drush en sites
Then implement a SitePlugin — an annotated PHP class extending SitePluginBase — to define which content and settings belong to each site. Enable the sites_example submodule for annotated example implementations.