Registry
The registry is Strata's catalog of Drupal plugin types — field types, widgets, formatters, media sources, Views plugins, and more. It determines what options are available when you configure fields, displays, and other entity settings in your project.
What the registry contains
Every Drupal site has a plugin registry — the set of field types, form widgets, display formatters, and other plugins that modules provide. Strata mirrors this concept so that your content architecture uses real Drupal plugin identifiers, not free-text strings.
The registry ships with 15 registry types covering the full range of Drupal plugin categories:
| Registry Type | Used By | Description |
|---|---|---|
| Field Types | Fields | Storage types like Text (plain), Entity Reference, Image |
| Field Widgets | Fields, Form Displays | Input widgets for editing field values in forms |
| Field Formatters | Fields, View Displays | Output formatters for rendering field values |
| Media Sources | Media Types | Source plugins like File, Image, Remote Video |
| Views Display Plugins | View Displays | Display types: Page, Block, Feed, REST Export |
| Views Style Plugins | View Displays | Output styles: Table, Grid, HTML List, RSS |
| Views Row Plugins | View Displays | Row rendering: Fields, Content, Taxonomy Term |
| Views Pager Plugins | View Displays | Pagination: Full, Mini, Some, None |
| Views Access Plugins | View Displays | Access control: Unrestricted, Permission, Role |
| Image Effects | Image Styles | Transform operations: Scale, Crop, Resize, Rotate |
| Paragraph Behavior Plugins | Paragraph Types | Contributed behavior plugins (varies by site) |
Widgets and formatters declare which field types they are compatible with via a compatibleWith mapping. When you select a field type, Strata automatically filters the widget and formatter dropdowns to show only compatible options — just like Drupal's Field UI does.
Global vs project-scoped entries
Registry entries exist at two levels:
- Global entries — seeded from Drupal core. These cover all built-in field types, widgets, formatters, and plugins. They are visible to every project and cannot be edited or removed from the UI. The global tier includes 119 registry entries and 28 core modules.
- Project-scoped entries — added when you install a contributed module or create a custom registry entry for a specific project. These entries are only visible within that project.
When Strata resolves registry entries for a project, it merges both tiers: global ∪ project. If a project-scoped entry has the same machine name as a global one, the project-scoped entry takes precedence. This lets you override a core plugin's label or settings schema for a specific project without affecting others.
All resolution goes through a capability profile — an abstraction layer that encapsulates the scoping rules. Today every project uses the Drupal profile, but the architecture supports adding other CMS targets without changing the UI layer.
Contributed module registry
Strata can import contributed Drupal modules from drupal.org and automatically extract the plugins they provide. This populates your project's registry with the field types, widgets, formatters, and other plugins that the module defines.
Adding a module
Navigate to your project's Settings → Registry page. In the Contributed Modules section, search for a module by name. Strata fetches the module archive from drupal.org, parses its .info.yml files and plugin annotations, and presents a preview of everything it found — field types, widgets, formatters, entity types, and submodule plugins.
Review the analysis and click Install. Strata writes the module row and all of its registry entries in a single transaction, so a failure partway through never leaves orphaned entries.
What gets imported
The import extracts plugins from the module and all of its submodules:
- Field types, widgets, and formatters with their compatibility mappings
- Media source plugins
- Views display, style, row, pager, and access plugins
- Image effects
- Entity types (with fieldability and bundle metadata)
- Paragraph behavior plugins
Removing a module
From the same registry page, find the installed module and click Remove. Strata deletes the module row and all of its project-scoped registry entries in a single transaction. Global entries from the same module name are never affected.
How registry entries affect field configuration
Registry entries are referenced throughout your project using registry_ref columns in the tab schema. These columns behave like foreign keys into the registry:
| Column | Registry Type |
|---|---|
| Field Type | field_types |
| Widget | field_widgets |
| Formatter | field_formatters |
| Source Plugin (Media Types) | media_sources |
| Display Plugin (View Displays) | views_display_plugins |
| Style Plugin (View Displays) | views_style_plugins |
| Row Plugin (View Displays) | views_row_plugins |
| Pager Plugin (View Displays) | views_pager_plugins |
| Access Plugin (View Displays) | views_access_plugins |
| Behavior Plugins (Paragraph Types) | paragraph_behavior_plugins |
Some registry references are constrained. For example, the Widget column on a field is constrained by the field's Field Type: only widgets whose compatibleWith.field_types array includes the selected field type will appear in the dropdown. The same applies to formatters.
Registry entries can also carry a settings schema — a JSON object describing the configurable settings for that plugin (e.g. maximum length for a text field, image style for an image formatter). When present, Strata renders a settings form alongside the field, letting you document storage settings, widget settings, and formatter settings as part of your content architecture.
Drupal version filtering
Each project has a target Drupal version (set when you create the project). Registry entries can declare version bounds using min_drupal_version and max_drupal_version columns:
min_drupal_versionis compared against the project's major.minor version (e.g.10.2)max_drupal_versionis compared against the major version alone (e.g.10)
When a project targets Drupal 10, any registry entry with a min_drupal_version of 11 or higher is automatically excluded from all lookups. This means your field type, widget, and formatter dropdowns only show plugins that actually exist in your target Drupal version.
Version filtering applies equally to global entries and project-scoped entries. Contributed modules imported via the registry UI do not set version bounds by default — if you need to restrict a contributed plugin to a specific Drupal version range, you can edit the entry from the registry settings page.
Permissions
Registry access is governed by the project:registry permission, which is granted to member, admin, and owner roles.
- Viewers can see the registry page and browse all entries, but cannot add, edit, or remove anything.
- Members and above can install and remove contributed modules, create custom registry entries, and sync the registry.
The registry settings page is accessible at Project Settings → Registry. All write controls are individually gated, so viewers see a read-only view of the same data.