Новости 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 Гость просматривают эту тему.
  • 10 Ответов
  • 1482 Просмотров
*

nikolasmax

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
Здравствуйте. подскажите как в joomshoping  сделать миниатюры поменьше. в карточке товара. спасибо
*

Biss

  • Давно я тут
  • 995
  • 101 / 0
класс jshop_img_thumb в .css
*

nikolasmax

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
класс jshop_img_thumb в .css
а можно путь к етому файлу а то я новичок. спасибо
*

Biss

  • Давно я тут
  • 995
  • 101 / 0
/components/com_jshopping/css/
*

Satool

  • Захожу иногда
  • 139
  • 2 / 0
В настройках размер изображений устанавливается
*

Biss

  • Давно я тут
  • 995
  • 101 / 0
В настройках размер изображений устанавливается
Дополнительных фото?
*

Satool

  • Захожу иногда
  • 139
  • 2 / 0
Дополнительных фото?
Да. Вот тут /administrator/index.php?option=com_jshopping&controller=config&task=image в полях "Ширина изображения товара" и "Высота изображения товара" ставите необходимые размеры.
Но действует только для новых товаров.
*

Biss

  • Давно я тут
  • 995
  • 101 / 0
Я в курсе где настройки.
Вынужден поправить -
Но действует только для новых товаров.
Есть плагин для изменения уже загруженных фото.
А по теме, прочитайте внимательно первый пост автора.
*

nikolasmax

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
Спасибо. помогли
*

nikolasmax

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
Я в курсе где настройки.
Вынужден поправить -Есть плагин для изменения уже загруженных фото.
А по теме, прочитайте внимательно первый пост автора.
а как плагин называется?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Как сделать отстутствующие товары затемненными?

Автор dron

Ответов: 6
Просмотров: 932
Последний ответ 27.08.2019, 13:09:32
от dron
Сделать пункт меню с категориями

Автор Mick_20

Ответов: 8
Просмотров: 1048
Последний ответ 03.07.2018, 15:20:25
от Mick_20
Съедает описание в карточке товара Joomshoping

Автор standerson13

Ответов: 2
Просмотров: 1135
Последний ответ 24.04.2018, 21:29:25
от standerson13
Как сделать вывод фото товара в категории также как в карточке товара?

Автор semak85

Ответов: 1
Просмотров: 1033
Последний ответ 02.06.2017, 21:03:02
от dmitry_stas
Редактирование количества товара в корзине кнопками "+", "-" (Joomshoping)

Автор eavasi

Ответов: 21
Просмотров: 6696
Последний ответ 19.02.2017, 00:12:06
от alex_nice