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

wlad_wm

  • Новичок
  • 5
  • 0 / 0
Добрый день.
Нужна помощь. Захотел встроить флеш-меню в шаблон. Создал его с помощью Flas Menu Labs. Добавил необходимые строки в файл шаблона в "Joomla\templates\templ\index.php". Само меню и все что с ними связано лежит в "Joomla\flash_menus\Menu1\".
Открываю сайт, флешка не грузится. Видно, что плейер работает, а загрузить саму флешку не может.
Если на локалном компе запускаю файл Test.htm (собственно в нем содержится только код запуска флеш) - броузер открывает без проблем.

HELP! Два дня бьюсь над этим - выход ноль. !
*

Kami

  • Захожу иногда
  • 146
  • 5 / 0
сайт в студию
может пути прописаны неверно??
*

wlad_wm

  • Новичок
  • 5
  • 0 / 0
Хм.. даже не знаю.. сейчас пытаюсь пойти по другому пути - создать свой модуль. Вроде сделал, да только при заливке на сервер возникает ошибка:
Код
XML Parsing Error at 3:11. Error 9: Invalid character
. Даже знаю в чем дело. Сгенерированный файл menu_data.xml не проходит.

Что же касается путей - все ок, после некоторых мытарств, настроил. Все дело было в том, что весь код сгенерирован Flash Menu Labs (я просто выложил в каталоu *.swf мульт - он запустился).

Борюсь с Flash Menu Labs
*

gspro

  • Новичок
  • 7
  • 0 / 0
  • Жизнь прекрасна
Всем привет. У меня подобная проблема.
Меню работает только на главной и страницах первого-второго уровня. Как только открываешь страницу раздела или компонента, меню пропадает.
Вот рабочая страница www.kenguru-tour.gspro.biz где тестирую меню. А на этой странице www.kenguru-tour.gspro.biz/tury-za-graniczu/bolgariya.html уже не работает. Кувыркался целый день, но...
Совсем забыл сказать, проблемы возникают, когда включен SEO - режим поисковой оптимизации. Есть большое желание, чтобы работало и при включенном SEO.
Если кто знает как решить, пожалуйста, помогите..
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Слетели URL и шаблон

Автор max888

Ответов: 2
Просмотров: 5791
Последний ответ 28.12.2020, 17:37:52
от draff
VirtueMart 1.9 шаблон письма

Автор m176

Ответов: 0
Просмотров: 3100
Последний ответ 23.10.2020, 12:38:35
от m176
Как вывести путь до шаблона с помощью API Joomla?

Автор elche

Ответов: 13
Просмотров: 15812
Последний ответ 11.09.2018, 23:48:50
от DK-Scorp
Ширина меню

Автор alex86r93

Ответов: 5
Просмотров: 4850
Последний ответ 14.06.2018, 05:13:50
от KANEGI
как сделать кнопки меню!

Автор Millenium_3000

Ответов: 10
Просмотров: 11364
Последний ответ 17.08.2017, 17:24:12
от Intrande