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

iskintel

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Здравствуйте. Подскажите пожалуйста, почему может не работать выпадающее меню только на одном языке мультиязычного сайта. Дополнительный стиль создала для нового меню (uk-UA), уровень вложенности - Все указала, в модуле mainmenu  поставила- показывать подпункты и последний уровень- все.
В чем может быть проблема? Основное меню ru-RU выпадает, все нормально. *ОХ-Х-Х*
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
так а как меню организованы?
главные страницы для каждого языка
и все языки в майнменю?
*

iskintel

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
так а как меню организованы?
главные страницы для каждого языка
и все языки в майнменю?
два меню русское и украинское, для каждого назначена главная страница
« Последнее редактирование: 26.03.2020, 15:48:15 от iskintel »
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
покажите скриншот из админки где меню
*

iskintel

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
« Последнее редактирование: 04.04.2020, 22:07:42 от iskintel »
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
http://joxi.ru/brRzqkXUYMnjer
в меню ua и ru только главные страницы
http://joxi.ru/Dr8RzxgtzjPw42
http://joxi.ru/KAggROlhXj6QNA


все остальные в майн меню
его в настройках шаблона и выбираем
*

iskintel

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Я не могу все остальные пункты в майн меню , они же у меня разные, у них разные названия(на рус., на укр.). У меня два шаблона и в каждом указано свое меню.
« Последнее редактирование: 04.04.2020, 22:07:58 от iskintel »
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Я не могу все остальные пункты в майн меню , они же у меня разные, у них разные названия(на рус., на укр.). У меня два шаблона и в каждом указано свое меню.
https://nimb.ws/8WP1Rm
вопрос зачем два шаблона?
читайте мануал по хеликсу
там все расписано про мультилэнг
*

iskintel

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

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
*

iskintel

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
В том стиле, что По умолчанию я не могу поменять язык и там привязано одно меню, в другом стиле другое меню.
*

iskintel

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Я не думаю, что с этим связано, что не работает выпадающий список подпунктов
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
В том стиле, что По умолчанию я не могу поменять язык и там привязано одно меню, в другом стиле другое меню.
я написал как на хеликсе делается мультиязычное меню
*

iskintel

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
я написал как на хеликсе делается мультиязычное меню
я поняла, спасибо
*

iskintel

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
я написал как на хеликсе делается мультиязычное меню
я точно так же организовала меню и на другом сайте, там разные стили в разных версиях языка, но с выпадающим меню проблем нет
« Последнее редактирование: 29.03.2020, 12:36:14 от iskintel »
*

sergkh

  • Осваиваюсь на форуме
  • 48
  • 1 / 0
Правильная Мультиязычность в шаблонах на основе HELIX ULTIMATE https://joomlaforum.ru/index.php/topic,326792.msg1808554.html#msg1808554
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Различные условия в шаблонах Joomla 3.0 и 2.5

Автор Fedor Vlasenko

Ответов: 133
Просмотров: 30315
Последний ответ 16.12.2024, 15:52:14
от goga_pgasovav
Двойное меню

Автор cirip

Ответов: 0
Просмотров: 1269
Последний ответ 05.11.2024, 23:19:21
от cirip
Пункт меню Текстовый разделитель ведет на главную страницу

Автор zahar_92

Ответов: 8
Просмотров: 4353
Последний ответ 27.07.2023, 13:37:17
от ei-dos
[РЕШЕНО]Скрыть пункт меню на мобильных устройствах

Автор lexxbry

Ответов: 16
Просмотров: 7013
Последний ответ 23.05.2023, 07:22:49
от geral
Шаблоны Joomlart, Gavick, Yootheme, RocketTheme для Joomla: легально и с обновлениями, no warez

Автор _ib_

Ответов: 168
Просмотров: 206907
Последний ответ 15.04.2023, 18:26:50
от AS1969