Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: OpenID Connect / OAuth client 3.0.0-alpha9 New alpha version released for module openid_connect (3.0.0-alpha9). Release: Opensolr Search 4.5.0 Minor update available for module opensolr_search (4.5.0). Release: Timelinr 1.0.1 Minor update available for module timelinr (1.0.1). Usage Milestone: Simplify Module simplify crossed 10,000 active installs. Usage Milestone: Views Reference Filter Module entityreference_filter crossed 10,000 active installs. Usage Milestone: Dropdown Language Module dropdown_language crossed 10,000 active installs. Usage Milestone: Paragraphs Browser Module paragraphs_browser crossed 10,000 active installs. Usage Milestone: OpenAPI Module openapi crossed 10,000 active installs. Usage Milestone: Decoupled Router Module decoupled_router crossed 10,000 active installs. Module Revived: Entityqueue Buttons 1.1.2 Module entityqueue_buttons updated after 8 months of inactivity (1.1.2).

Modal

2,863 sites Security covered Drupal 10–11
View on drupal.org

Modal allows you to create and display dialogs, notifications, or custom content on your Drupal site. You can configure placement, content, display conditions, and even trigger them dynamically or through specific actions.

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

Help us Buy us a coffee ☕️

Meet the Modal Maintainers

Renato G. H. (RenatoG)

Author|Maintainer

Paulo H. Starling (paulocs)

Maintainer

Thalles Ferreira (thalles)

Maintainer


Graphic designer

Nico Grienauer

(grienauer)

Logo author














Modal Documentation

See our documentation here

Credits


http://www.ciandt.com

Depends on

Dependencies of the latest stable release

  • JS Cookie
  • datetime Drupal core
  • filter Drupal core

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
33
Tracked since
Oct 2024
Latest release
4 months ago
Releases (12 mo)
26 ▲ from 7
Maintenance
Active

Release Timeline

Releases

Version Type Core Release date
5.1.12 Stable 10–11 Apr 25, 2026
5.1.11 Stable 10–11 Apr 5, 2026
5.1.10 Stable 10–11 Mar 29, 2026
5.1.9 Stable 10–11 Mar 22, 2026
6.0.0-beta13 Pre-release 10–11 Mar 15, 2026
6.0.0-beta12 Pre-release 10–11 Feb 22, 2026
5.1.8 Stable 10–11 Feb 17, 2026
6.0.0-beta11 Pre-release 10–11 Jan 25, 2026
5.0.16 Stable 9–10 Dec 14, 2025
5.1.7 Stable 10–11 Dec 14, 2025
6.0.0-beta10 Pre-release 10–11 Dec 14, 2025
6.0.0-beta9 Pre-release 10–11 Nov 29, 2025
5.1.6 Stable 10–11 Nov 29, 2025
5.0.15 Stable 9–10 Nov 29, 2025
6.0.0-beta8 Pre-release 10–11 Nov 22, 2025
6.0.0-beta7 Pre-release 10–11 Nov 19, 2025
5.1.5 Stable 10–11 Nov 19, 2025
5.0.14 Stable 9–10 Nov 16, 2025
5.1.4 Stable 10–11 Nov 16, 2025
6.0.0-beta6 Pre-release 10–11 Nov 8, 2025
6.0.0-beta5 Pre-release 10–11 Nov 1, 2025
5.1.3 Stable 10–11 Nov 1, 2025
5.0.13 Stable 9–11 Nov 1, 2025
6.0.0-beta4 Pre-release 10–11 Oct 19, 2025
5.1.2 Stable 10–11 Oct 19, 2025
5.0.12 Stable 9–11 Oct 19, 2025
6.0.0-beta3 Pre-release 10–11 Aug 12, 2025
5.1.1 Stable 10–11 Aug 12, 2025
5.1.x-dev Dev 10–11 Oct 29, 2024
6.0.0-beta2 Pre-release 10–11 Oct 29, 2024
5.1.0 Stable 10–11 Oct 29, 2024
6.0.0-beta1 Pre-release 10–11 Oct 27, 2024
6.0.x-dev Dev 10–11 Oct 27, 2024