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

doxastic

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Мне разместить меню в позиции user4. А где выбирается позиция, отображается только одно место. Помогите.



<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="template">
   <name>siteground-j15-53</name>
   <version>1.0.0</version>
   <creationDate>06/2008</creationDate>
   <author>SiteGround</author>
   <authorEmail>templates@siteground.com</authorEmail>
   <authorUrl>http://www.siteground.com</authorUrl>
   <copyright>SiteGround</copyright>
   <license>SG TOS</license>
   <description>TEMPLATE_DESCRIPTION</description>
   <files>
      <filename>index.php</filename>
      <filename>templateDetails.xml</filename>
      <filename>template_thumbnail.png</filename>
      <filename>params.ini</filename>
      <filename>templates.php</filename>
      
      <filename>images/arrow.png</filename>
      <filename>images/banner_01.jpg</filename>
      <filename>images/banner_02.jpg</filename>
      <filename>images/button_bg.jpg</filename>
      <filename>images/content.jpg</filename>
      <filename>images/content_bottom.jpg</filename>
      <filename>images/css.jpg</filename>
      <filename>images/h3.jpg</filename>
      <filename>images/header.jpg</filename>
      <filename>images/headerbottom.jpg</filename>
      <filename>images/headerimg.jpg</filename>
      <filename>images/headertop.jpg</filename>
      <filename>images/indent1.png</filename>
      <filename>images/indent2.png</filename>
      <filename>images/indent3.png</filename>
      <filename>images/indent4.png</filename>
      <filename>images/index.html</filename>   
      <filename>images/menu_li.jpg</filename>
      <filename>images/menu_row.jpg</filename>
      <filename>images/search_field.jpg</filename>
      <filename>images/searchbut.jpg</filename>
      <filename>images/spacer.png</filename>
      <filename>images/submenu_row.jpg</filename>
      <filename>images/top_with_search.jpg</filename>
      <filename>images/top_without_search.jpg</filename>
      <filename>images/xhtml.jpg</filename>
      
      <filename>css/index.html</filename>
      <filename>css/template.css</filename>
      <filename>css/editor.css</filename>
   </files>
   <languages>
      <language tag="en-GB">en-GB.tpl_siteground-j15-53.ini</language>
   </languages>
   <administration>
       <languages folder="admin">
         <language tag="en-GB">en-GB.tpl_siteground-j15-53.ini</language>
      </languages>
    </administration>
</install>

*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Помогите прописать модули
« Ответ #1 : 05.03.2010, 19:05:07 »
посмотреть любой дефолтовый шаблон. Там все прекрасно написано.
*

doxastic

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Помогите прописать модули
« Ответ #2 : 05.03.2010, 20:10:34 »
Ну это не ответ. Что и куда, вот это уже более точно.
*

doxastic

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Помогите прописать модули
« Ответ #3 : 05.03.2010, 20:50:37 »
Прописал позиции и jps и т.д. в выборе позиций все равно ничего нету. спасайте.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Помогите установить шаблон...

Автор shurik920

Ответов: 20
Просмотров: 6436
Последний ответ 12.04.2016, 14:09:55
от WEBBY Master
Как прописать адрес главной страницы во 2 меню?

Автор p4o1

Ответов: 4
Просмотров: 2721
Последний ответ 25.04.2015, 10:17:54
от p4o1
Разместить модули в позиции foot горизонтально

Автор mustsee

Ответов: 8
Просмотров: 4710
Последний ответ 02.04.2015, 14:30:13
от AlexP750
В ссылке с index2.php отображается шаблон и модули, что за глюк?!

Автор hels

Ответов: 6
Просмотров: 2154
Последний ответ 05.07.2014, 22:03:16
от hels
Как убрать модули?

Автор 3ipka

Ответов: 4
Просмотров: 1914
Последний ответ 21.06.2014, 14:55:17
от motokraft