использование FileLayout для рендера элементов макета Joomla

Этот механизм используется под капотом Joomla для рендера отображения почти всех элементов интерфейса как фронта, так и админки. Обычно переиспользуемые "запчасти" выносятся в отдельные файлы: кнопки, тулбары, меню, табы и т.д. Для унификации отображения каждого элемента нужны некие данные данные и/или параметры: например, заголовок таба, надпись или onclick для кнопки, CSS класс и т.д.

Самый простой пример использования

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

/**
     * Method to instantiate the file-based layout.
     *
     * @param   string  $layoutId  Dot separated путь к файлу, включая имя файла относительно base path
     * @param   string  $basePath  Основной путь к папке с макетами
     * @param   mixed   $options   Данные, нужные для работы макета. Registry или массив
     *
     * @since   3.0
     */
 $layout = new FileLayout('layout_file_name', JPATH_SITE . '/path/to/your/layout', ['buttonName' => 'Button name']);
// Рендерим наш макет
echo $layout->render();

Это означает что в папке site.ru/path/to/your/layout находится файл layout_file_name.php. В нём находится HTML-вёрстка нашей кнопки. Внутрь файла передаются данные и параметры для рендера. Получить эти данные можно следующим образом.

<?php
// Это содержимое файла /path/to/your/layout/layout_file_name.php
// Переданные данные приходят в формате Registry. Можно указать значение по умолчанию
$buttonName = $this->options->get('buttonName', 'Default name if value is empty');
?>
<button class="btn btn-primary"><?php echo $buttonName;?></button>

Примечательно, что использование этого класса позволяет переопределять ваш лейаут стандартным для Joomla способом - в папке html/layouts активного шаблона.

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

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

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

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

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

88 Всего расширений
11 Категорий
384 Выпущено версий
368525 Всего скачиваний
Корзина
Корзина пуста