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

kushiy

  • Захожу иногда
  • 401
  • 4 / 0
Можно ли сделать вывод материалов в виде слайдера тех, у кого в поле даты стоит день рожденья? Другими словами мне нужно сделать вывод артистов у которых сегодня день рожденья
*

Sergey Romanov

  • Moderator
  • 603
  • 19 / 0
Re: Показ страниц по полю дата
« Ответ #1 : 18.04.2018, 13:19:32 »
Это не так просто. Ведь день рождения в дргой год было. Так что нужно выбрать людей под числу в месяце. Но думаю это мжоно сделать не небольшой кастомизацией.
Лучший ССК всех времен Cobalt
*

kushiy

  • Захожу иногда
  • 401
  • 4 / 0
Re: Показ страниц по полю дата
« Ответ #2 : 18.04.2018, 13:20:54 »
А немного пояснить можете, как именно? Что такое "кастомизация"?
*

Sergey Romanov

  • Moderator
  • 603
  • 19 / 0
Re: Показ страниц по полю дата
« Ответ #3 : 18.04.2018, 17:28:41 »
Кастомизация это изменение кода самого кобальта. Тоесть настройками этого не сделать, придется поправить РНР в некоторых местах.

Во первых если вы хотите шаблон слайдера, то вам придется такой шаблон сделать или проискать на складе (depot) может кто уже такой делал.

А для того что бы выбрать только нужные записи, придется создать код, воспользовавшить АПИ кобальта.
Лучший ССК всех времен Cobalt
*

kushiy

  • Захожу иногда
  • 401
  • 4 / 0
Re: Показ страниц по полю дата
« Ответ #4 : 18.04.2018, 17:50:27 »
Ясно. на этот компонент даже информации не найти путной, только первые основы и всё. А как делать шаблон, как кастомизировать никакой информации
« Последнее редактирование: 18.04.2018, 18:11:33 от Sergey Romanov »
*

Sergey Romanov

  • Moderator
  • 603
  • 19 / 0
Re: Показ страниц по полю дата
« Ответ #5 : 18.04.2018, 18:13:46 »
По шаблонам есть документация как и на многое другое. На АПИ тоже.

http://docs.mintjoomla.com/ru/cobalt/create-templates-general

Для того что бы давать конкретные советы нужны конкретные задачи. Просто просьба "мне нужен шаблон слайдера" это даже не рассмартивается как причина подробного ответа. Опишите конктренную задачу. Что за слайдер? что будет внутри? Где будет показвыаться в модуле или в теле сайта, и т.д.
Лучший ССК всех времен Cobalt
*

kushiy

  • Захожу иногда
  • 401
  • 4 / 0
Re: Показ страниц по полю дата
« Ответ #6 : 18.04.2018, 18:25:18 »
Спасибо за ссылку. Не  находил такую в сети. Действительно то что нужно для начинающих
А слайдер нужен типа http://prntscr.com/j6ycgb
При наведении сбоку появляются кнопки влево и вправо
*

Sergey Romanov

  • Moderator
  • 603
  • 19 / 0
Re: Показ страниц по полю дата
« Ответ #7 : 19.04.2018, 10:27:47 »
Да такой не сложно сделать в шаблое. Можно использовать котовые скрипты слайдеров. Желательно основаных на Бутстрапе что бы новых скриптов не включать.
Лучший ССК всех времен Cobalt
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться