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

elenalerkh

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Установила Simple Images Gallery Pro. В настройках корневой папки галереи (Root folder for image galleries) поменяла папку на media/k2/galleries. В редакторе изображения загружаются нормально, но на сайте вместо галереи ряд ошибок:
Цитировать
Внимание
The was a problem converting the source image.

There was a problem rendering your image gallery. Please make sure that the folder you are using in the Simple Image Gallery Pro plugin tags exists and contains valid image files. The plugin could not locate the folder: media/k2/galleries/243


Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /home/cp100596/public_html/plugins/content/jw_sigpro/jw_sigpro/includes/helper.php on line 263

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '/home/cp100596/public_html/media/k2/galleries/243/p188pql1ob8nm16521sv61l1v194n4.jpg' is not a valid JPEG file in /home/cp100596/public_html/plugins/content/jw_sigpro/jw_sigpro/includes/helper.php on line 263

Warning: Invalid argument supplied for foreach() in /home/cp100596/public_html/components/com_k2/views/item/view.html.php on line 442

Notice: Undefined property: stdClass::$image1 in /home/cp100596/public_html/components/com_k2/views/item/view.html.php on line 458

Переустановка галереи не помогает.
Где-то в коде прописан неверный путь к корневой папке с изображениями, не могу найти... Плюс ошибки в самом К2
*

elenalerkh

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Проблема решена: оказывается, нужно было просто уменьшить размер изображений. Причем, если в папке с изображениями присутствует хотя бы одна фотография размером больше допустимого, то вся галерея перестает отображаться и выскакивают вышеуказанные ошибки. Все оказалось банально просто.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Simple Image Gallery Pro - фото с именем на кирилице, после сохранения исчезают

Автор Леон

Ответов: 0
Просмотров: 3722
Последний ответ 09.06.2021, 16:02:09
от Леон
Русская локализация Simple Image Gallery и SIG Pro (обновляется)

Автор Kostelano

Ответов: 1
Просмотров: 3908
Последний ответ 29.01.2020, 01:41:26
от Kostelano
Умный поиск и Simple Image Gallery Pro

Автор michaellux

Ответов: 1
Просмотров: 3196
Последний ответ 24.04.2019, 10:45:00
от Technic
Simple Image Gallery и пагинация

Автор tortxp

Ответов: 0
Просмотров: 3295
Последний ответ 10.01.2019, 23:21:18
от tortxp
Как вывести Simple Image Gallery не в тексте, а в отдельном Div?

Автор artemka

Ответов: 8
Просмотров: 5356
Последний ответ 18.09.2018, 11:34:31
от Sergeyy