Совет по Joomla: использование методов плагинов в любом месте Joomla 4 / Joomla 5

  • Среда, 14 августа 2024
 Совет по Joomla: использование методов плагинов в любом месте Joomla 4 / Joomla 5

Нередко расширения Joomla в готовом виде состоят из пакета - комплекта плагинов, модулей, библиотек. Расширения из одного пакета могут нуждаться в одном и том же методе и раньше было несколько путей:

  • копировать код везде (выкидываем принцип DRY - don't repeat yourself)
  • делать простой трейт в одном плагине и обращаться к нему (в Joomla 3 так обычно не делали)
  • делать библиотеку отдельным расширением пакета. Но как-то странно так заморачиваться ради одного метода

В Joomla 4 и старше новая (хм-м, 2 года уже прошло...) архитектура плагинов позволяет обращаться к методам плагина откуда угодно.

<?php
use Joomla\CMS\Factory;

// Указываем группу плагина и element
$myPlugin = Factory::getApplication()->bootPlugin('system','myplugin');
// И вызываем нужный нам метод плагина "Сделать хорошо"
$result = $myPlugin->doItWell();

Такой подход можно использовать везде: в компонентах, плагинах, библиотеках, модулях и т.д. Например, если в настройках компонента можно переключить источник данных - плагин-провайдер, то один путь - триггерить событие для группы этих плагинов. А можно вызвать нужный метод напрямую.

<?php
use Joomla\CMS\Factory;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Plugin\PluginHelper;

// Получим параметры компонента
$component_params = ComponentHelper::getParams('com_mycomponent');
// Получим имя плагина-провайдера
$plugin_name = $component_params->get('data_provider');
// Проверим, а включён ли плагин?
if(PluginHelper::isEnabled('system',$plugin_name))
{
     // Загрузим плагин
     $plugin_provider = Factory::getApplication()->bootPlugin($plugin_name,'system');
     // Получим данные из него напрямую
     $external_data = $plugin_provider->getExternalData($any_id);
}

Источник:  Совет по Joomla: использование методов плагинов в любом месте Joomla 4 / Joomla 5

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

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

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

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

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

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

Логотип Joomla

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

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

Свернуть

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

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

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

Видео

Форум о Joomla