Use Modal to add dialogs to your site for lightboxes, user notifications, or completely custom content.
Just go at: Administration Β» Structure Β» Modal
Have fun :)
Modal 6 is ready π»
Highlights:
- β Drupal 11
- β Drupal Dialog API
- β Bootstrap 5
Enjoy! π
With Modal you're able to
- Flexible Placement: Position modals anywhere through the CMS;
- Content Creation: Utilize CKEditor for modal content;
- Display Configuration: Specify pages to show your modal;
- Configuration Management: Export and import modals easily;
- Wildcard Usage: Use wildcards in the URL path for flexibility;
- Page Load Display: Set the modal to appear on page load;
- Custom Triggering: Open modal by clicking a custom class or ID;
- Dynamic Modification: Customize modals dynamically with hooks;
- Custom Actions: Create actions with
hook_modal_submit(); - Visual: Personalize modal's header, footer, and buttons;
- Sizes: Support for different modal sizes;
- Access Control: Select roles that can view the modal;
- API: Create modals programmatically via the Entity Manager.
Liked? Give us a star βοΈ at top-right of this page to encourage me
Matrix
| Modal | D9 | D10 | D11 | Bootstrap | Dialog API | Toast | Status |
| 6.0.x | β | β | β | β | β | β | New Features |
| 5.1.x | β | β | β | β | β | β | Stable |
| 5.0.x | β | β | β | β | β | β | Bugfixes only |
Hooks
hook_modal_alter
You're able to update your Modal before display with this code
/**
* Implements hook_modal_alter().
*/
function HOOK_modal_alter(&$modal, $modal_id) {
$modal->setLabel('Title Updated');
$modal->setBody('Body Updated');
}
hook_modal_ID_alter
You're able to update Modal by ID (machine_name) with this example
/**
* Implements hook_modal_ID_alter().
*/
function HOOK_modal_ID_alter(&$modal, $modal_id) {
$modal->setLabel('New Title');
$modal->setBody('New Body');
}
hook_modal_submit
You're able to use Hook Modal Submit and work with Ajax with this example
/**
* Implements hook_modal_submit().
*/
function HOOK_modal_submit($modal, $modal_state, $modal_id) {
// Your AJAX logic here.
\Drupal::logger('modal_page')->notice('Modal Submit was triggered');
}
Insert Modal programmatically
$modal = \Drupal::entityTypeManager()->getStorage('modal')->create();
$modal->setId('modal_id');
$modal->setLabel('Modal Title');
$modal->setBody('Modal Content');
$modal->setPages('/hello');
$modal->save();
Suggestions and Helpers
Modal are completely free. Everyone is welcome to help.
Feel free to submit your suggestion at issue queue or buy us a coffee
Meet the Modal Maintainers
Graphic designer
Modal Documentation
See our documentation here
Credits

Project information
- Project categories: Administration tools, Content display, Content editing experience
2,863 sites report using this module
- Created by renatog on , updated
Stable releases for this project are covered by the security advisory policy.
Look for the shield icon below.
Releases
Dialog API + Toast π₯³
Development version: 6.0.x-dev updated 15 Mar 2026 at 16:28 UTC











