Новости Joomla

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

0 Пользователей и 1 Гость просматривают эту тему.
  • 0 Ответов
  • 1020 Просмотров
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Плагин для вставки видео с YouTube

https://github.com/AlekVolsk/ytvideo

Формат шорткода:
Код
{ytvideo адрес[|соотношение сторон][|заголовок]}
Пример использования:
Код
{ytvideo https://www.youtube.com/watch?v=rrRZZ_3licM|16:9|What is a computer really?}

=========================

Плагин для вставки видео с Vimeo

https://github.com/AlekVolsk/vmvideo

Формат шорткода:
Код
{vmvideo адрес[|соотношение сторон][|заголовок]}
Пример использования:
Код
{vmvideo https://vimeo.com/131191237|16:9|The New JavaScript: ES6 - Rob Eisenberg}
По умолчанию для видео показываются заголовок, имя владельца и портрет владельца, которые можно отключить в настройках плагина.

Также в настройках плагина можно указать цвет не чёрно-белых элементов управления плеера.

=========================

Данные решения выгодно отличаются от других решений тем, что загружает видео с не при загрузке страницы, а только после начала воспроизведения, что не создает задержек при загрузке страницы.

Фоновое изображение предварительно кешируется и поддерживает ленивую загрузку (включается в настройках, по умолчанию включено).

Некоторые часть шорткода могут отсутствовать, но их порядок должен сохраняться: адрес|соотношение сторон|заголовок.

Допустимые соотношения сторон: 4:3, 16:10, 16:9, 18:9 (вместо двоеточия допускается указывать знак минуса). Некорректное соотношение сторон будет являться частью заголовка, следующим за ним.

Указывать заголовок необязательно. Чтобы быстро вставить шорткод, для каждого плагина есть соответствующая кнопка для редактора, которая открывает диалоговое окно, в котором можно ввести URL-адрес и заголовок видео в соответствующих полях.

На странице блок с видео автоматически растягивается по ширине родительского контейнера. Если вам надо как-то иначе - переопределяете шаблоны плагинов в основном шаблоне сайта и перевёрстываете как вам необходимо.

Для использования плагинов в программном коде можно воспользоваться конструкцией:
Код: php
echo Joomla\CMS\HTML\HTMLHelper::_('content.prepare', 'строка шорткода');

Плагины не имеют автоматического сервера обновлений, т.е. обновы в админке Joomla автоматом не прилетают.

=========================

Автор плагинов разрабатывал последние для себя лично, под свои личные потребности, обновляет их так же лично для себя и распространяет как есть, без гарантий и поддержки.

Ниже в теме все вопросы, связанные с некорректной работой плагинов не будут рассматриваться без ссылки на страницу, где плагин используется и без точного описания, как воспроизвести баг. Если это действительно баг - пофиксим.

Пожалуйста, не забывайте о правилах форума. Хамство и обращение типа "мне надо", "ты должен" молча игнорируются.

Все индивидуальные хотелки принимаются только через обращение в коммерческий раздел форума. Спасибо за понимание.
« Последнее редактирование: 07.06.2019, 16:15:06 от AlekVolsk »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT Content Image gallery контент плагин вставки изображений

Автор sergeytolkachyov

Ответов: 2
Просмотров: 2553
Последний ответ 08.07.2025, 17:29:40
от sergeytolkachyov
NBS - динамическое создание кнопок в редакторе для вставки произвольного текста

Автор effrit

Ответов: 8
Просмотров: 1461
Последний ответ 11.03.2019, 17:33:29
от effrit
Комплект контент-модулей и плагинов, использующий UIkit 3

Автор AlekVolsk

Ответов: 3
Просмотров: 1572
Последний ответ 10.03.2019, 10:13:21
от AlekVolsk
Компонент фото и видео альбома для Joomla 3.x

Автор xchesh

Ответов: 98
Просмотров: 29500
Последний ответ 11.08.2017, 16:15:07
от DragonFlyzz
Небольшие, но полезные плагины и модули (tushov.ru)

Автор enshtein

Ответов: 9
Просмотров: 10013
Последний ответ 11.04.2012, 08:57:39
от krylof