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

elasmahaon

  • Новичок
  • 4
  • 0 / 0
K2 (2.6.1) и Joomla (2.5.8)

Нет возможности редактировать порядок в материалах, причем в категориях изменить порядок можно, подскажите как исправить?

Раздел "Материалы":


Раздел "Категории"


Заранее благодарен!
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Э-э-э-э...уважаемый..а в чем вопрос собственно то? В разделе материалы кликните на сам пункт таблицы Порядок..и у вас активируется этот элемент сортировки....))) Всех благ...)))
*

elasmahaon

  • Новичок
  • 4
  • 0 / 0
Обоже...   ;D

Спасибо!
*

Dron25

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Здравствуйте, тоже имеется проблема с порядком материалов в к2 (с материалами самой Joomla все нормально)
В материалах как нажать на стрелочки вверх или в низ чтоб переместить материал, ничего не происходит, материал стоит на том же месте, хотя сис сообщение пишет что новый порядок сортировки сохранен, может быть плагин мешает какой то ?

повторю, что в материалах самой Joomla все нормально.
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Здравствуйте, тоже имеется проблема с порядком материалов в к2 (с материалами самой Joomla все нормально)
В материалах как нажать на стрелочки вверх или в низ чтоб переместить материал, ничего не происходит, материал стоит на том же месте, хотя сис сообщение пишет что новый порядок сортировки сохранен, может быть плагин мешает какой то ?

повторю, что в материалах самой Joomla все нормально.
В настройка самой категории, в которой вы хотите изменить порядок вывода материалов выставьте в пункте Сортировка материалов значение Сортировка.После чего меняйте порядок материалов в этой категории.
Операцию повторить необходимое количество раз для каждой требуемой категории...))
*

Niktus

  • Осваиваюсь на форуме
  • 11
  • 1 / 0
Собственно вопрос практически тот же. Есть много категорий, они отвечают за меню и материалы в них но вот незадача, нельзя отсортировать каждый материал на главной так как пункт порядок не работает из за того что материалы в разных категориях. Вопрос, как отсортировать чтобы из любой категории можно было выставить любой материал по порядку. на главную.

сразу оговорюсь, упорядочить можно назначением избранных установив данную сортировку из менеджера меню, но как упорядочить избранные в таком случае?
Они не сортируются так как находятся в разных категориях, а дублировать все материалы в одну категорию не целесообразно и это значит убивать настроенное меню и структуру.
« Последнее редактирование: 21.12.2012, 13:37:28 от Niktus »
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Тут можно попробовать дать такой совет.Поскольку пункт меню именуется Последние материлы из категорий или пользователей, то поменять им даты создания, определив тем самым нужный порядок. Это если без хаков.Не всегда такой момент будет уместен..ну типа новостного блога, сайт газеты.Но в целом и там сработать может при творческом подходе...)))
« Последнее редактирование: 21.12.2012, 15:49:11 от paternoster »
*

Dron25

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
В настройка самой категории, в которой вы хотите изменить порядок вывода материалов выставьте в пункте Сортировка материалов значение Сортировка.После чего меняйте порядок материалов в этой категории.
Операцию повторить необходимое количество раз для каждой требуемой категории...))
Сделал как посоветовали, поменял во всех категориях на Сортировка и нет изменений, товары не сортируются админке
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Самая распространенная ошибка при этом, что обычно эти категории наследуют настройки от какой-то другой.Где заложен иной порядок.Проверьте наследование параметров категорий. Все должно работать.У меня работало что на 2.5.7. что работает на 2.6.5
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться