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

attiny

  • Осваиваюсь на форуме
  • 35
  • 2 / 0
Контент сайта наполняется пользователями.
Проблема в том что многие пользователи копируют этот текст из документов World Office и в результате получается полная бяка.
В одном документе шрифт большой...в другом маленький...в третьем через строчку...
Искал "формы" для отправки "очищеного" контента в выбираемые пользователями категории...нету.
Поставил вместо TynyMCE  JCE в нем есть кнопка "вставить как текст"....но не до всех юзеров доходит.
Замучусь я за всеми юзерами сзади ходить и подчищать.
Как сделать автоочистку?

зы: В Joomla 1.5 такое можно прикрутить?
*

beliyadm

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

attiny

  • Осваиваюсь на форуме
  • 35
  • 2 / 0
Я пробоват твой редактор...не пойдет. Все сливается в кашу. 90% пользователей - женского пола...какие там теги!
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Я пробоват твой редактор...не пойдет. Все сливается в кашу.
почему в кашу? У меня получается весьма грамотный и красиво оформленный код.
Научить их работать с парой тегов (ну это же как в Wordе, только сразу не видно изменений) не думаю что сложно.
Тогда остается вариант поставить материалы на премодерацию и самостоятельно очищать форматирование после добавления пользователем
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

attiny

  • Осваиваюсь на форуме
  • 35
  • 2 / 0
Цитировать
почему в кашу? У меня получается весьма грамотный и красиво оформленный код.
У меня тоже получается, а вот у них нет  ;D
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Если использует JCE то там есть кнопочка "Вставить текст из Word" , вот с ее помощью пусть и вставляют тектс.
А всех предупредить, что если будут вставлять напрямую :) то ждет их айяйяй через одноместо с лишением премии.

У меня на прошлой работе тоже было такое, две недели они тупили, но после ежедневного промывания мозгов стали все далать аккурактно.

ЗЫ. в моем случае тетушки и девушки были из рзных организаций и тем не менее справились.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Пустой контент на странице создания материала

Автор salem.sakarov

Ответов: 4
Просмотров: 2834
Последний ответ 12.11.2013, 11:58:28
от draff
При создании материала не отображается редактор

Автор cacuaz

Ответов: 5
Просмотров: 2821
Последний ответ 31.10.2010, 22:13:18
от cacuaz
Как сделать вывод статичного материала в модуль?

Автор Sevenor

Ответов: 1
Просмотров: 2089
Последний ответ 01.12.2009, 14:53:12
от Sevenor
Открытие материала отдельной страницей без меню и боковых колонок

Автор Darhan

Ответов: 4
Просмотров: 2921
Последний ответ 16.11.2009, 09:31:20
от Darhan
Размещение материала

Автор Anddryy

Ответов: 1
Просмотров: 2039
Последний ответ 15.11.2009, 00:19:49
от beliyadm