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

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

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

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

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