external_entity_server
Ever wish you could display content from another Drupal site as if it were part of your own—fully themed, used in Views, and rendered with view modes—without duplicating that content?
The External Entity Server and External Entity (Consumer) modules were created for site builders who want a streamlined, Drupal-native way to share and display live content across multiple sites.
Why Use External Entity?
Drupal offers several ways to share data across sites—such as JSON:API, REST, Feeds, Migrate, or Entity Share. These are powerful tools, but they often come with trade-offs:
- Some duplicate content from site to site, which can lead to syncing challenges.
- Others require custom frontend code or decoupling making it harder to use familiar Drupal tools like Views or blocks.
- Some are excellent for structured imports but aren’t ideal for displaying live, remote data
External Entity takes a different approach: it lets you display remote content as if it lived locally, using standard Drupal conventions. You can theme it, display it in Views, and manage it like any other entity—while the data itself stays on the original site.
🏫 Example
A school district wants to publish district-wide news that automatically appears on each school’s site:
- On the district site, configure External Entity Server to expose the News content type.
- On each school site, use External Entity (Consumer) to display that News content, fully themed and available for use in Views—without duplicating or importing it.
⚙️ Quick Setup Overview
▶️ Want to follow along with a screencast?
Install the External Entity Server module using Composer and enable it. See https://www.drupal.org/docs/extending-drupal/installing-modules
1. Define Shared Resources
Path: /admin/config/services/external-entity/server/resource
Choose which Drupal entities (nodes, taxonomy terms, paragraphs, etc.) should be shared.
2. Configure Authentication
Path: /admin/config/services/external-entity/server/resource/authentication
Open access or cookie-based auth is currently supported. If using cookies, consumers must be configured to pass the appropriate session credentials.
3. Set Up Cache Invalidation
Path: /admin/config/services/external-entity/cache-invalidate
Tell the server where to purge cached data when shared content changes. This ensures that consumer sites always display the most current version of remote content. All consuming sites must also have the External Entity module enabled.
Once your server is configured, you can set up the External Entity (Consumer) on any site to pull and display the shared content.