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

qwertyrever

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Подскажите, в материале К2 нет нигде кнопки редактирования материала. Пользователь авторизован, но нет кнопки даже когда заходишь под суперадминистратором. В чем дело? И как добавить  статью пользователем с фронтенда? У меня выскакивает ошибка 404. Спасибо
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Занесите вашего СуперАдминистратора в группу пользователей К2.Скажем, Издатели.Но толко ее нужно предварительно создать и наделить соответствующими правами.Типа редактировать свои и чужие материалы.
И вот уже тогда логиньтесь под СуперАдмином и будет вам щастье...)))
*

qwertyrever

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Это я сделал, правами наделил, все как по учебнику. Но кнопки все равно нет. И при добавлении материала с фронтенда - 404.
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Ссылку в студию...посмотрим...)))
*

qwertyrever

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

paternoster

  • Давно я тут
  • 506
  • 24 / 1
После залогинивания вообще ведет на страницу быстрого старта шаблона...
Значит так, попробуйте создать для начала пункт меню Создать материал.В качестве типа выбирите Форма редактирования материала.
И проверьте, доступно ли создание материалов из меню
Второй момент.А вы пользователя и группу для него создавали в менеджере Joomla или К2?
И что стоит в настройках ЧПУ Joomla? Такое впечатление, что включено Перенаправление URL.И не поддерживается при том.От того и 404 ошибка может вылазить, что ничего, кроме индекса не работает то толком.
« Последнее редактирование: 14.03.2013, 16:23:12 от paternoster »
*

qwertyrever

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Пункт меню "создать материал" сделал - верхнее меню, последняя кнопка - "1", как и говорил, ошибка 404

Пользователя создавал в менеджере Joomla, он автоматически появлялся в менеджере К2. В самом менеджере не нашёл кнопки "добавить нового пользователя" (Joomla 3). Ну, а группу пользователей создавал, естесственно, в менеджере К2. Открыл все права группе.
В настройках ЧПУ - перенаправление отключено, включено только SEF.
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
То, что пользователь был создан в менеджере Joomla и даже виден в менеджере К2, еще не значит, что он автоматически наделен правами какой-то из групп К2. Для этого стоит перейти в менеджер пользователей К2, создать группу с правами, если таковой еще нет, и после этого, зайти в пользователя и прикрепить его в менеджере пользователей К2 к НЕОБХОДИМОЙ ГРУППЕ.
Успехов...
*

qwertyrever

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Я это все проделал с самого начала, даже для эксперимента сделал экспорт пользователей с Joomla в К2. Все пользователи находятся в группе с открытыми правами, вплоть до редактирования чужих материалов и создания новых.

Всё, разобрался! Спасибо за ответы paternoster )

РЕШЕНИЕ ПроблемЫ:  при установке прав группе К2, необходимо выбрать во вкладке "Установить групповые права для этих категорий"в строке "Фильтр" те категории, редактировать материалы которых разрешаете. Все появилось.
« Последнее редактирование: 14.03.2013, 18:36:55 от qwertyrever »
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Тогда "поздравляю" вас..))) еще раз проверmте менеджера пользователей К2.
Это может быть все, что угодно.От криво вставшего компонента, до кривой варезной сборки.
На J3 с нуля все ставится, работает, присваиваются группы и пользователи могут создавать материалы.
« Последнее редактирование: 14.03.2013, 18:51:05 от paternoster »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенос материалов из Joomla3 + K2 в Joomla4

Автор Magnum79

Ответов: 0
Просмотров: 1474
Последний ответ 24.05.2024, 21:49:14
от Magnum79
Как добавить свой класс для страниц вывода материалов по тегу k2?

Автор Slava77

Ответов: 0
Просмотров: 4084
Последний ответ 16.02.2023, 23:29:34
от Slava77
Наполняя категорию K2 копированием материалов, пропадает навигация в статьях

Автор Slava77

Ответов: 4
Просмотров: 3027
Последний ответ 24.12.2021, 22:30:56
от Slava77
Перестала работать опция оценки материалов/рейтинг в компоненте K2

Автор Yonakano

Ответов: 4
Просмотров: 1766
Последний ответ 07.02.2021, 00:30:57
от Yonakano
Не работает мультиязычность для материалов К2

Автор Kokshetau

Ответов: 5
Просмотров: 1137
Последний ответ 21.11.2020, 23:36:12
от Kokshetau