Custom Extension Guides
This page indexes all extension guides across Pimcore's three layers. Each guide indicates which layers it touches so you know what to expect before diving in.
Layer legend:
- Core - PHP/Symfony: models, config, events, DI (
pimcore/pimcore) - Backend - Studio Backend API: endpoints, adapters, response customization (
studio-backend-bundle) - UI - Pimcore Studio frontend: plugins, tabs, widgets, navigation (
studio-ui-bundle)
Assets
| Guide | Description | Layers |
|---|---|---|
| Adding Asset Types | Define custom asset types beyond the built-in set | Core, UI |
| Asset Metadata Adapters | Customize how asset metadata is read and written | Backend |
| Editor Toolbar Button | Add custom buttons to editor toolbars (example uses asset editor; the same ComponentRegistry slot pattern works for data object and document editors) | UI |
Documents
| Guide | Description | Layers |
|---|---|---|
| Adding Document Types | Map custom document types to class names via config | Core, Backend, UI |
| Adding Document Editables | Create custom editables for document templates | Core, UI |
| Custom Document Type Adapters | Register custom document type adapters for the API | Backend |
Data Objects
| Guide | Description | Layers |
|---|---|---|
| Adding Object Datatypes | Add custom data types to Pimcore data objects | Core |
| Adding Object Layout Types | Add custom layout types for data object editing | Core, UI |
| Field Definition Adapters | Customize how data object field definitions are processed | Backend |
| Custom Layouts Based on Object Data | Dynamically select custom layouts based on object data by decorating the Studio Backend LayoutService | Backend |
API and Endpoints
| Guide | Description | Layers |
|---|---|---|
| Extending Endpoints | Add custom API endpoints to the Studio Backend | Backend |
| Extending OpenAPI | Extend the OpenAPI specification with custom schemas | Backend |
| Additional and Custom Attributes | Enrich API responses with custom data via PreResponse events | Backend |
| Extending Updater and Patcher | Extend the element update and patch pipeline | Backend |
| API Data in Plugins | Fetch and use Studio Backend API data in plugins | UI |
Grid, Filters, and Listings
| Guide | Description | Layers |
|---|---|---|
| Custom Grid Columns | Add custom columns to the element grid (backend definition, resolver, collector; optional frontend cell type) | Backend, UI |
| Extending Filters | Add custom search index and listing filters | Backend |
| Custom Listing | Build custom listing views in the frontend | UI |
UI: Navigation, Tabs, and Widgets
| Guide | Description | Layers |
|---|---|---|
| Getting Started with Your First Plugin | Set up a Studio UI plugin project from scratch | UI |
| Main Navigation Entry | Add entries to the Pimcore Studio main navigation | UI |
| Left Sidebar Entry | Add custom entries to the left sidebar | UI |
| Tab Manager | Register custom tabs in element editors | UI |
| Widget Manager | Register and open custom widgets programmatically, integrate with the perspective editor | UI |
| Context Menus | Add or modify context menu entries | UI |
| Dynamic Types | Use the dynamic type system for extensible rendering | UI |
| Custom Perspective Widgets | Add custom widget types to perspectives (schema, repository, hydrator, Widget Editor type) | Backend, UI |
| Perspectives Overview | Perspective configuration and context menu permissions | Backend |
Permissions and Security
| Guide | Description | Layers |
|---|---|---|
| Add Your Own Permissions | Register custom permission keys and check them in Studio Backend (#[IsGranted]) and Studio UI (isAllowed()) | Core, Backend, UI |
| Modifying Permissions on Object Data | Modify element permissions based on object data using the GenericDataIndex PermissionEvent | Core, Backend |
Icons and Appearance
| Guide | Description | Layers |
|---|---|---|
| Custom Icons and Tooltips | Override element tree icons and tooltips via Studio Backend pre_response.* events and CustomAttributes | Backend |
| Custom Icons (Studio) | Add custom icon sets to Pimcore Studio | UI |
GDPR and Compliance
| Guide | Description | Layers |
|---|---|---|
| GDPR Data Extractor | Configure and extend the GDPR Data Extractor with custom data sources | Core, Backend, UI |
Models and Data
| Guide | Description | Layers |
|---|---|---|
| Overriding Models | Replace default Pimcore model implementations | Core |
| Custom Persistent Models | Store additional data with custom database models | Core |
System and Maintenance
| Guide | Description | Layers |
|---|---|---|
| Maintenance Tasks | Register scheduled tasks for periodic operations | Core |