Custom Strapi Plugins Overview
This page documents all custom plugins in your Strapi monorepo, with usage, customization, and technical details.
📦 Collection Type Select
Section titled “📦 Collection Type Select”🧠 What does it do?
Section titled “🧠 What does it do?”The Collection Type Select plugin introduces a custom field to Strapi 5,
allowing editors to select from available collection types.
This is useful for building flexible relationships and dynamic references
between different content types, such as linking articles to products or events.
🛠️ How to customize for your project
Section titled “🛠️ How to customize for your project”1. Register new collection types
Section titled “1. Register new collection types”To support additional collection types, update the plugin’s registration logic
in admin/src
or server/src
:
// Example: Add a new collection typecollectionTypes.push({ uid: "api::event.event", displayName: "Event",});
2. Customize the UI
Section titled “2. Customize the UI”Modify the admin React components in admin/src
to change how the selection
field appears or behaves.
You can add icons, descriptions, or grouping for a better editor experience.
3. Extend server logic
Section titled “3. Extend server logic”Add custom logic in server/src
for validation, transformation, or population
of related data.
For example, you can enforce certain relationships or auto-populate fields based
on the selected type.
🧩 Example Usage
Section titled “🧩 Example Usage”{ "type": "customField", "plugin": "collection-type-select", "options": { "allowedTypes": ["article", "event", "product"] }}
📌 Summary
Section titled “📌 Summary”Feature | Description |
---|---|
Custom field | Lets you select collection types dynamically |
Extensible | Add more types or logic as needed |
UI integration | Appears in the Strapi admin panel |
📦 Content Type Teaser
Section titled “📦 Content Type Teaser”🧠 What does it do?
Section titled “🧠 What does it do?”The Content Type Teaser plugin enables the creation and management of teaser
blocks for any content type.
It supports dynamic teaser generation, including filtering and mapping of
components for use in hero sections or flexible content layouts.
🛠️ How to customize for your project
Section titled “🛠️ How to customize for your project”1. Adjust teaser logic
Section titled “1. Adjust teaser logic”Edit the controller or middleware logic in server/src
to change how teasers
are selected or filtered.
2. Add new teaser types
Section titled “2. Add new teaser types”Extend the plugin to support new teaser layouts or data sources by updating the admin and server code.
3. Customize returned teaser data
Section titled “3. Customize returned teaser data”Modify the returned object shape to match your frontend requirements.
🧩 Example Usage
Section titled “🧩 Example Usage”// Example: Custom teaser mappingreturn { image: hero?.image ?? record.image, title: record.title, description: record.description ?? record.text, slug, category: record.category?.title,};
📌 Summary
Section titled “📌 Summary”Feature | Description |
---|---|
Dynamic teasers | Generates teasers for any content type |
Flexible | Supports hero and flexContent components |
Extensible | Add new teaser logic or layouts as needed |
📦 Drag Drop Content Types
Section titled “📦 Drag Drop Content Types”🧠 What does it do?
Section titled “🧠 What does it do?”This plugin adds drag-and-drop reordering capabilities to Strapi content
types.
Built with dndkit and React 18, it allows editors to visually reorder items in
the admin UI, improving editorial workflows for ordered lists, menus, or
featured content.
🛠️ How to customize for your project
Section titled “🛠️ How to customize for your project”1. Configure sortable fields
Section titled “1. Configure sortable fields”Specify which fields or content types should support drag-and-drop in your plugin or content type configuration.
2. Customize drag UI
Section titled “2. Customize drag UI”Edit the admin components to change the appearance or behavior of the drag-and-drop interface.
3. Extend server logic
Section titled “3. Extend server logic”Add hooks or middleware to handle reordering on the backend, ensuring the new order is persisted.
🧩 Example Usage
Section titled “🧩 Example Usage”{ "type": "customField", "plugin": "drag-drop-content-types", "options": { "sortableFields": ["order", "priority"] }}
📌 Summary
Section titled “📌 Summary”Feature | Description |
---|---|
Drag-and-drop | Reorder content visually in the admin UI |
Modern stack | Uses dndkit, compatible with React 18 |
Configurable | Choose which types/fields are sortable |
📦 Filterable Attributes
Section titled “📦 Filterable Attributes”🧠 What does it do?
Section titled “🧠 What does it do?”This plugin registers a custom field for marking attributes as filterable,
primarily for use with Meilisearch filtering in Strapi 5.
It helps you define which fields should be indexed and available for search
filtering.
🛠️ How to customize for your project
Section titled “🛠️ How to customize for your project”1. Register more filterable fields
Section titled “1. Register more filterable fields”Update the registration logic to include additional fields or types.
2. Integrate with search
Section titled “2. Integrate with search”Connect this plugin with your Meilisearch or other search provider configuration.
🧩 Example Usage
Section titled “🧩 Example Usage”{ "type": "customField", "plugin": "filterable-attributes", "options": { "filterable": true }}
📌 Summary
Section titled “📌 Summary”Feature | Description |
---|---|
Custom field | Marks attributes as filterable |
Search-ready | Designed for Meilisearch integration |
Simple setup | Minimal configuration required |
📦 Link Plugin
Section titled “📦 Link Plugin”🧠 What does it do?
Section titled “🧠 What does it do?”This plugin manages internal and external links for your content.
It provides a custom field and services for linking documents, resolving slugs,
and generating routes for use in navigation and content relationships.
🛠️ How to customize for your project
Section titled “🛠️ How to customize for your project”1. Extend link types
Section titled “1. Extend link types”Add new link types (e.g., custom, external, internal) in the admin and server logic.
2. Customize route resolution
Section titled “2. Customize route resolution”Edit the service logic to change how slugs and routes are generated or matched.
3. Integrate with frontend
Section titled “3. Integrate with frontend”Use the plugin’s route and link data to power navigation or dynamic linking in your frontend.
🧩 Example Usage
Section titled “🧩 Example Usage”{ "type": "customField", "plugin": "link", "options": { "allowedTypes": ["internal", "external"] }}
📌 Summary
Section titled “📌 Summary”Feature | Description |
---|---|
Link management | Handles internal/external/custom links |
Route resolver | Generates slugs and routes for content |
Extensible | Add new link types or logic as needed |
📦 Webhook Plugin
Section titled “📦 Webhook Plugin”🧠 What does it do?
Section titled “🧠 What does it do?”This plugin manages webhooks for your Strapi project,
allowing you to trigger external services or workflows on content changes.
🛠️ How to customize for your project
Section titled “🛠️ How to customize for your project”1. Add new webhook events
Section titled “1. Add new webhook events”Configure which events should trigger webhooks in the plugin’s server logic.
2. Customize payloads
Section titled “2. Customize payloads”Edit the webhook handler to change the data sent to external services.
🧩 Example Usage
Section titled “🧩 Example Usage”{ "type": "webhook", "plugin": "webhook", "options": { "events": ["create", "update", "delete"], "url": "https://your-service.com/webhook" }}
📌 Summary
Section titled “📌 Summary”Feature | Description |
---|---|
Webhook manager | Triggers external services on content changes |
Configurable | Choose which events trigger webhooks |
Extensible | Customize payloads and endpoints |