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

Помогите, пожалуйста!

Удалил главное меню, создал точно такое же, но теперь главная страница не открывается.
пишит ошибка 404 не найден компонент.
Кто разбирается - подскажите где, что подправить? :)

Спасибо!
« Последнее редактирование: 25.10.2010, 08:25:35 от Forget-me-not »

joomla 1.5.8 если это актуально

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

to Antonov, спасибо :D
пол форума прочитал, а всё так просто, но куда оно девается это "умолчание", т.е. почему?
т.е. я то ничего не удалял, вечером сделал - работает, с утра пару пунктов создал - 404
« Последнее редактирование: 23.03.2009, 10:53:57 от samurai »
*

elgraphics

  • Новичок
  • 4
  • 0 / 0
to Antonov, спасибо, помог "топору"  ^-^

Апупеть  :o Как все просто. Спасибо громадное.  ;D
*

Zudva

  • Захожу иногда
  • 84
  • 0 / 0
надоже....а я уже удалил и думал что просто никак не лечится((((

Также удалил ссылку на главную из меню, появилась ошибка 404. Создал новый пункт в меню и установил звездочку "по умолячанию".

Ошибка исчезла, но форма логина, голосование, блок рекламы - все исчезло.

Подскажите, как вернуть?
*

holod

  • Новичок
  • 6
  • 0 / 0
Спасибо! Помог еще одному топору :)
*

archi_tec

  • Захожу иногда
  • 63
  • 0 / 0
Сделал один из пунктов по умолчанию (Главную) но теперь на какую ссылку не нажму, кидает на нее же, хотя адрес меняется. Как тут быть?
*

archi_tec

  • Захожу иногда
  • 63
  • 0 / 0
Разобрался. Было отключено SEO

Скажите как поставить пункту значение  поумолчанию?   ^-^ ^-^ ^-^ ^-^ ^-^
*

kir80

  • Новичок
  • 4
  • 0 / 0
Здрасти всем!
Ребя, как с этим бороться: PHP Fatal error: Class 'JMenuAdministrator' not found in /home/srv26604/htdocs/libraries/joomla/application/menu.php on line 102
каталоги были удалены и восстановлены полностью, пропало в админке во вкладке Все меню: менеджер меню, каталог товаров, главное меню, кроме корзины меню. в других вкладках, медиа менеджер, CSVI... вообщем кусками, благо сайт работает... И с этим всем мне удалось обновить Joomla до 1.5.26, заменой папок, но меню так и не появилось..(( 
Пожалуйста помогите, чем сможете! Заранее спасибо!
« Последнее редактирование: 18.12.2012, 00:31:11 от kir80 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не могу распаковать jpa архив сайта Akeeba backup. ajax error

Автор smadkz

Ответов: 4
Просмотров: 1777
Последний ответ 26.12.2020, 15:15:15
от stendapuss
[Решено] Проблема с авторизацией Invalid Token

Автор treX

Ответов: 100
Просмотров: 96489
Последний ответ 06.10.2019, 16:55:45
от PaLyCH
Не могу войти в админку Joomla 1.5

Автор MrSkif

Ответов: 14
Просмотров: 10414
Последний ответ 12.09.2018, 19:36:32
от PaLyCH
Не могу перейти на панель вода в админку

Автор samat

Ответов: 5
Просмотров: 1778
Последний ответ 14.12.2017, 19:19:05
от andrejdi
Горизонтальное меню

Автор Hloja_Blimm

Ответов: 7
Просмотров: 1429
Последний ответ 24.11.2017, 15:13:28
от Hloja_Blimm