Новости 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 Ответов
  • 1806 Просмотров
*

Legard

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Подскажите какую-нибудь информацию, благодаря которой можно было бы сделать флеш заставку на главной странице, а именно, что бы флеш воспроизводилась на переднем плане, при том, что на заднем - затемненный сайт (то, что можно использовать полупрозрачный png знаю). Может есть кде-нибудь код?

Концепция такая:
После того, как флешка отыграла, она просто закрывается и взору предстает главная страница сайта.
Однако важно, что бы эта заставка не проигрывалась больше одного раза для каждого посетителя сайта.
Может есть какой-нибудь плагин для этого? Добавить к шаблону позицию модуля по центру сайта, которая бы имела бэкграунд вокруг полупрозрачный фон и располагалась бы поверх всех остальных позиций модулей (присвоить position: fixed и что-то, что выводило бы на переднем плане), но как, сделать, что бы проигрывалась не более одного раза.

Код
По принципу предосмотра картинки в [url=http://www.google.com/]Google[/url], если по ней кликнуть:
http://images.google.ru/imgres?imgurl=http://www.gandex.ru/upl/oboi/g20323.jpg&imgrefurl=http://www.gandex.ru/oboishow/2189/2/&usg=__OWyM7cauP9dpr-pKnhEAL-6XBuY=&h=1200&w=1600&sz=445&hl=ru&start=0&sig2=mkL1yMt1gZJYLCDSk9K6zw&zoom=1&tbnid=u1ygNl_G1qmTBM:&tbnh=142&tbnw=189&ei=45YITuLOHobAswaHoc3YDA&prev=/search%3Fq%3D%25D0%25BA%25D1%2580%25D0%25B0%25D1%2581%25D0%25B8%25D0%25B2%25D0%25B0%25D1%258F%2B%25D0%25BA%25D0%25B0%25D1%2580%25D1%2582%25D0%25B8%25D0%25BD%25D0%25B0%26hl%3Dru%26safe%3Doff%26biw%3D1429%26bih%3D925%26tbm%3Disch&itbs=1&iact=hc&vpx=142&vpy=78&dur=535&hovh=194&hovw=259&tx=191&ty=134&page=1&ndsp=35&ved=1t:429,r:0,s:0

PS: Что-то наверно слишком сложная у меня идея..
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
jcemediabox
там описано как сделать всплівающее окно с видео и сделать так, чтобы было только один раз
http://www.joomlacontenteditor.net/support/tutorials/jcemediabox/264-create-a-media-popup
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Внедрение своих шрифтов на сайт (опрос + решение)

Автор danik.html

Ответов: 98
Просмотров: 93520
Последний ответ 25.10.2015, 20:49:10
от Serqliv
Свой адрес страницы

Автор acamaz

Ответов: 2
Просмотров: 2026
Последний ответ 21.07.2015, 13:56:33
от Gosha5767
Вставить ручками рекламный блок вверх страницы шаблона раздела и категории

Автор annushka

Ответов: 2
Просмотров: 1755
Последний ответ 27.04.2015, 14:56:19
от annushka
Как прописать адрес главной страницы во 2 меню?

Автор p4o1

Ответов: 4
Просмотров: 2720
Последний ответ 25.04.2015, 10:17:54
от p4o1
Как сделать меню вконце страницы ?

Автор p4o1

Ответов: 1
Просмотров: 1765
Последний ответ 08.04.2015, 22:46:50
от vipiusss