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

warlock-1000

  • Новичок
  • 5
  • 0 / 0
Добрый вечер! Помогите разобраться с компонентом Widgetkit. Мучаюсь уже 3 день, не могу понять в чем причина. Требуется разместить несколько модулей Widgetkit (карта, галлерея) в разных вкладках (Tabах). При размещении в активной вкладке (та которая открыта при загрузке страницы) любой widgetKit отображается корректно, но при переходе в другую вкладку модули WidgetKit либо вообще не отображаются (галерея, слайдшоу) либо отображаются некорректно (карта Google - отображается только 40-50% карты, остальное место пусто). При запуске FireBug в Firefox модуль начинает отображаться нормально :( Может кто сталкивался с таким, пожалуйста, подскажите как решить проблему!
Widgetkit использовался различных версий от 1.4.5 до 1.4.7. На форуме YOOtheme тишина ( и походу надежды на них нет :(). Заранее всем спасибо.
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Вкладки чем выведены и где?
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

warlock-1000

  • Новичок
  • 5
  • 0 / 0
Используются вкладки, встроенные в шаблон от компании joomshaper.com, шаблон - University. Tabы размещены в стандартном материале Joomla + была попытка вставить widgekit в Tabы модуля от этой же компании SP Tab. Результат одинаковый :( в первой (или другой активной при загрузке страницы) вкладке Widgekit работает, в остальных "косяки".
*

warlock-1000

  • Новичок
  • 5
  • 0 / 0
Да, похже здесь тоже "тишина"...:(
*

Abiladenda

  • Захожу иногда
  • 181
  • 5 / 0
Нужно сделать примерно вот что, а также табы работают по id и нужно следить что бы на странице не было одинаковых id если у вас больше чем один tab на странице.

Решение вывода Google map в accordion вкладках
==============================

I think there is a pretty simple fix for this (not fully tested yet but looks promising)
•go to your Widgets / Accordion / Styles / [and duplicate the Default folder, call it "display-on" or something appropriate]
•edit the template.php file adding a class to the enclosing div as shown below;
 <h3 class="toggler"><?php echo $item['title'];?></h3>
 <div class="acc-override"><div class="content wk-content clearfix"><?php echo $item['content'];?></div></div>
•add this class to your template custom.css file
 .acc-override {display:block!important;}

All we're doing here is creating a new Accordion Style which you can select when you Edit your Settings, then making the enclosing Div of the Google Map element display - on, so that it initializes properly, job done!
 I was going to add a bit of javascript to hide the Divs but it's not necessary as the height for that enclosing Div element is "0" so it doesn't show anyway.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Компонент Search в Joomla 5

Автор hensler

Ответов: 4
Просмотров: 1528
Последний ответ 28.03.2025, 17:27:24
от azm1n
Как вывести на страницу в виде картинок как фотогалерею из widgetkit?

Автор chechelnitskiy

Ответов: 0
Просмотров: 1660
Последний ответ 08.05.2024, 13:31:09
от chechelnitskiy
DJ-Classifieds - компонент доска объявлений. Как скрыть системные сообщения

Автор user2008june

Ответов: 2
Просмотров: 991
Последний ответ 03.02.2022, 08:53:49
от user2008june
REreplacer 2.10.3 (Рус.) Компонент замены любых значений.

Автор ЗЛОЙ на всех

Ответов: 80
Просмотров: 26003
Последний ответ 28.12.2021, 23:06:04
от Vlad1
Компонент тестов Guru от iJoomla.com

Автор Фей

Ответов: 3
Просмотров: 1045
Последний ответ 31.05.2021, 00:51:00
от AdWeb