В модальные окна удобно прятать части форм админки 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. Один из ведущих Telegram-канала русскоязычного Joomla-сообщества JoomlaFeed, один из модераторов чата русскоязычного Joomla-сообщества. Мои расширения в официальном маркетплейсе расширений Joomla - Joomla Extensions Directory. Имею публикации в официальном журнале международного Joomla-сообщества - Joomla Community Magazine.

Муж. Отец 3 детей.

Россия, Саратов.

Расширения Joomla WebTolk

90 Всего расширений
11 Категорий
401 Выпущено версий
396625 Всего скачиваний
Корзина
Корзина пуста