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

DizainerGazeti

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Здравствуйте! Столкнулся с такой проблемой. На сайте нужно сделать архив для газеты. В определённом материале должен быть список папок, как в медиа-менеджере, а внутри папок будут сами файлы в формате .pdf, которые можно скачать. Не могу найти подходящий компонент.. Кроме как Easy Folder Listing. Проблема его в том, что он выводит файлы непосредственно, указанной в настройках, папки-родителя, но не выводит папки. То есть нет возможности перемещения по этим папкам. Выглядит это вот так.


Может быть возможно как то дописать код этого модуля? Или есть решение проще? Помогите, пожалуйста, решить проблему
*

DizainerGazeti

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
ап
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Да элементарно сделать самостоятельно и более красиво, плагинов и решений масса, к примеру вот http://labs.abeautifulsite.net/archived/jquery-fileTree/demo/
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

DizainerGazeti

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
К сожалению я не знаю алгоритма действий, чтобы заработал этот прекрасный модуль у меня на сайте.. Как же мне запустить джава скрипт в материале?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
ну в принципе несложно набросать плагин для подобного вывода, если очень нужно - напомните завтра, накидаю демку (укажите версию движка только, под 1.5 писать или под 2.5)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

DizainerGazeti

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Буду премного благодарен! На сайте стоит Joomla Версия 1.5.26
P.S. Всё пытаюсь поставить этот скрипт на тестовом сайте (на денвере). Подключить библиотеку получается, а вот вывод директорий нет. Проверка работоспособности JQuery была с помощью вывода команды 'alert'. Извиняюсь, если неправильно использую термины.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
завтра накидаю установочную демку, в чистом виде и в виде плагина для админки подобный скрипт работает без проблем
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

DizainerGazeti

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Куда нужно закинуть файлы этого скрипта, чтобы он заработал?
*

DizainerGazeti

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
В общем я решил сфилонить.. Так как я понял, что нужно учить основы php и JavaScript. Принял такое решение, весьма не хорошее: сделать материал, который будет содержать ссылки на определенные папки, в которых будут лежать файлы. Эти ссылки будут содержать компонент для вывода файлов, о котором говорилось в первом посте. Надеюсь руки у меня дойдут до разработки нормального файлового дерева.. А пока буду тратить свое время на изучение языков, а не на поиск решения проблемы данной темы
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Чем лучше всего делать резервные копии сайта?

Автор 7Azimuth

Ответов: 115
Просмотров: 57414
Последний ответ 29.11.2023, 14:41:12
от sivers
Joomla 1.5 как убрать кнопку редактировать материант с сайта

Автор andriy465

Ответов: 5
Просмотров: 3660
Последний ответ 12.11.2023, 23:37:03
от all_zer
Проблемы с правами на запись папок "logs и tmp"

Автор murich

Ответов: 42
Просмотров: 28170
Последний ответ 07.10.2021, 18:29:16
от Maxandrey
Не могу распаковать jpa архив сайта Akeeba backup. ajax error

Автор smadkz

Ответов: 4
Просмотров: 1780
Последний ответ 26.12.2020, 15:15:15
от stendapuss
Версия сайта для слабовидящих

Автор nikos

Ответов: 22
Просмотров: 44207
Последний ответ 27.11.2020, 11:04:18
от chernobyl