Пример рендера модального окна в Joomla 5 с Bootsrap 5 Optional sizes и Fullscreen mode.

  • Четверг, 26 сентября 2024
Пример рендера модального окна в Joomla 5 с Bootsrap  5 Optional sizes и Fullscreen mode.

В модальные окна удобно прятать части форм админки Joomla для того, чтобы не было длинных портянок для заполнения. Одним из способов рендера модального окна где-нибудь в макете компонента являются следующий.

<?php
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Factory;

// в макетах компонента вместо этого
// можно использовать $this->getDocument()
Factory::getApplication()->getDocument()
    ->getWebAssetManager()->useScript('bootstrap.modal');

    $ModalData = [
        'selector' => 'AnySelectorModal', //modal id
        'params'   => [
            'title'      => 'Modal header text',
            'footer'     => 'Modal footer text', // or HTML
            'height'     => '400px', // height of the <iframe> containing the remote resource
            'width'      => '800px', // width of the <iframe> containing the remote resource
            'bodyHeight' => 70, // Optional height of the modal body in viewport units (vh)
            'modalWidth' => 80, // Optional width of the modal in viewport units (vh)
        ],
        'body' => 'Modal body content'
    ];
   
    echo LayoutHelper::render('libraries.html.bootstrap.modal.main', $ModalData); 

В Joomla 5 появилась возможность указывать параметр modalCss в массиве params. И теперь модальное окно в Joomla может менять свои размеры в зависимости от размера экрана (классы .modal-sm, .modal-lg и т.д), а также может стать полноэкранным (классы .modal-fullscreen, .modal-fullscreen-xl-down и т.д.).

Выглядит это так (в целом тот же код, но приведу его полностью):

<?php
use Joomla\CMS\Layout\LayoutHelper;

$this->getDocument()
    ->getWebAssetManager()->useScript('bootstrap.modal');

$ModalData = [
     'selector' => 'addNewColor',
          'params'   => [
               'title'      => 'Modal header text',
               'footer'     => 'Modal footer text',
               'height'     => '400px', // height of the <iframe> containing the remote resource
               'width'      => '800px', // width of the <iframe> containing the remote resource
               'bodyHeight' => 70, // Optional height of the modal body in viewport units (vh)
               'modalWidth' => 80, // Optional width of the modal in viewport units (vh)
               'modalCss' => 'modal-fullscreen',
          ],
          'body' => 'Modal body content'
];
   
echo LayoutHelper::render('libraries.html.bootstrap.modal.main', $ModalData); 

Добавлю ссылку на документацию по модалкам в Bootstrap 5.3.

 

Сергей Толкачев

Сергей Толкачев

Joomla-разработчик. Контрибьютер ядра Joomla. Муж. Отец 3 детей.

Россия, Саратов. https://web-tolk.ru info@web-tolk.ru

Статьи автора

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Логотип Joomla

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Свернуть

Коротко о главном в Joomla

Новости портала

Новое в блогах

Видео

Форум о Joomla