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

МарКиса

  • Новичок
  • 5
  • 0 / 0
FAQ K2 не помогает(
« : 28.01.2013, 02:29:54 »
Всем привет)хотелось бы узнать, вот тружусь уже нормалек.Вобщем K2 Login установил, поставил в блок.Хочу спросить прямо несколько вопросиков
:1)Можно ли перевести ссылки на русский?(куда идти, в какой файл?)

Спойлер
[свернуть]


2)в меню хочу поставить ссылку для добавления нового материала пользователями, какую ссылку поставить?
3)можно ли поставить как то K2 Login не в блоК?(цвет именно этого блока смущает)
4)на главну страницу вместо новостей(материалов)joomla, выводить материалы K2
шарился по нету, не нашел достойных ответов, может зДесь есть кто поможет?
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Re: FAQ K2 не помогает(
« Ответ #1 : 28.01.2013, 10:37:33 »
Здравствуйте, МарКиса.Рады очень за вас, что у вас нормалек.Желаем и дальше нормальков.Теперь касательно ваших вопросов.

1.Перевести можно.Обычно это делает за вас файл русификации компонента К2, который располагается по адресу сайт нормалек/language/ru-RU/ru-RU.com_k2.ini Если по каким-то причинам не состоялся перевод, тj это можно будет сделать ручками путем добавления соответствующих значений в соответствующий файл. Если вы не делали русификацию вообще, то советую вам это сделать, если только вы и ваша предполагаемая аудитория не обладает глубокими познаниями в english language.

2.Ваш второй вопрос относится к общим вопросам Joomla, а именно создание пункта меню Попробуйте создать пункт меню, выбирите тип пункта меню, в списке К2 выбирите Новые материалы от одного или нескольких пользователей или категорий.Или любое другое значение.Например категорию, материал, Форма редактирования материала. Вот этот тип пункта меню и является ответом на ваш вопрос номер 2 и 4. Насчет достойных ответов...ну тут только можно развести руками.Видимо я самый достойный...)))

3.По поводу модуля K2 Login. Вас смущает цвет модульной позиции, в которую вы его ставите? Так это вопросы или к шаблону сайту и его стилям CSS, или к стилям CSS самого компонента.Без начальных представлений о том, что это такое, не советовал бы без предварительного изучения там что-то править.

С наилучшими пожеланиями успехов в освоении джумловодства.Учите матчасть и будет вам щастье....)))
« Последнее редактирование: 29.01.2013, 01:09:16 от paternoster »
*

МарКиса

  • Новичок
  • 5
  • 0 / 0
Re: FAQ K2 не помогает(
« Ответ #2 : 28.01.2013, 22:03:29 »
который располагается по адресу сайт нормалек/language/ru-RU/ru-RU.com_k2.ini
;D
перешол по этому адресу, выглядит так
Спойлер
[свернуть]


нашел даже похожие строки в файле (сайт нормалек/modules/mod_k2_login/tmpl/userblock.php)

Спойлер
[свернуть]
   
и попробывал написать так в переводе:K2_MY_PAGE="Моя страница"
и...ничего не изменилось  :dry:
но ощущения такие, что я очень очень близко ))
Цитировать
Видимо я самый достойный...)))
Спасибо за ответ, наталкнуло поразмышлять)
« Последнее редактирование: 29.01.2013, 23:30:37 от МарКиса »
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Re: FAQ K2 не помогает(
« Ответ #3 : 29.01.2013, 01:08:09 »
Размышлять - удел достойных....))))
Так вот..работаем с файлами с помощью инструмента NotePad++
Не забываем выбирать правильную кодировку перед сохранением.
Правильная кодировка - UTF-8(без BOM)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться