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

VampiRUS

  • Осваиваюсь на форуме
  • 31
  • 7 / 0
Не уверен, что в нужный раздел пишу.
Сделал компонент авторизации через соц. сети, без логинзы или каких-то других сторонних сервисов.
Добавление поддерживаемых соц.сетей осуществляется через плагины.
На данный момент рализован плагин для facebook, вконтакте и mail.ru.
Работает начиная с 2.5.6
демо тут
Страница компонента.
« Последнее редактирование: 17.09.2012, 09:59:53 от VampiRUS »
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

diki78

  • Осваиваюсь на форуме
  • 37
  • 0 / 0
Re: Авторизация через социальные сети
« Ответ #2 : 14.09.2012, 22:00:32 »
Авторизировался через вконтакте. Логин становится неудобочитаемого вида, без возможности изменить его)
*

AlexSmirnov

  • Завсегдатай
  • 1862
  • 272 / 16
  • Ищите и найдете
Re: Авторизация через социальные сети
« Ответ #3 : 15.09.2012, 00:31:35 »
На мой взгляд, кнопка Twitter не помешала бы там. Как насчет планов с отправкой этого плагина на JED?
# Back the fufalo (особенно ту самую столкершу)! #
# ВАЖНО! Кайфую от удаления присланного в личку спама, почти как от любви (особенно по выходным). #
*

VampiRUS

  • Осваиваюсь на форуме
  • 31
  • 7 / 0
Re: Авторизация через социальные сети
« Ответ #4 : 17.09.2012, 09:55:11 »
voland, там всё плагинами, mail.ru например не через oauth, вконтакте через oauth, facebook через oauth, но через их библиотеку, так сделано специально, чтобы был пример реализации.
AlexSmirnov, в JED планирую, нужно немного причесать для этого. Твиттер не помешал бы, согласен. Реализация компонента такая, чтобы для подключения твиттера и т.д. нужен был бы только плагин, собственно он будет, как у меня время появится, либо у кого-то другого появится время и желание раньше, расчёт был на это :)
diki78 - так как регистрация автоматическая, то нужен уникальный логин. Самоу пользователю он в принципе не нужнет, наверное в каких-то компонентах выводится именно username вместо name, но тут уж скорее притензии к тем компонентам, не нужно лишний раз светить логин, хотя тоже зависит от специфики компонета.
« Последнее редактирование: 17.09.2012, 10:03:47 от VampiRUS »
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
Re: Авторизация через социальные сети
« Ответ #5 : 19.09.2012, 11:17:43 »
полезная штука, спасибо!
помимо твиттера еще бы Google не помешал.
*

VampiRUS

  • Осваиваюсь на форуме
  • 31
  • 7 / 0
Re: Авторизация через социальные сети
« Ответ #6 : 20.09.2012, 17:08:17 »
Добавлен твиттер и одноклассники
*

ifx

  • Осваиваюсь на форуме
  • 28
  • 4 / 0
Re: Авторизация через социальные сети
« Ответ #7 : 21.10.2012, 22:50:00 »
И вновь спрошу про поддержку Joomla 1.5?
*

VampiRUS

  • Осваиваюсь на форуме
  • 31
  • 7 / 0
Re: Авторизация через социальные сети
« Ответ #8 : 22.10.2012, 03:46:38 »
А joomline, что говорят?
Я так понял, что они решились поддерживать j1.5. Я по этой причине решил j1.5 не поддерживать.
У меня пока в планах на след. версию поддрежка Google, j3.0 и интеграция с другими компонентами.
*

ifx

  • Осваиваюсь на форуме
  • 28
  • 4 / 0
Re: Авторизация через социальные сети
« Ответ #9 : 24.10.2012, 00:02:41 »
А joomline, что говорят?
Я так понял, что они решились поддерживать j1.5. Я по этой причине решил j1.5 не поддерживать.
У меня пока в планах на след. версию поддрежка Google, j3.0 и интеграция с другими компонентами.
Решились да, за 3000р специальной доработкой по моей просьбе и интеграции с VirtueMart 1.x еще за 1000 рублей :)

Если предложите иную сумму по деньгам, готов купить у вас :)
*

VampiRUS

  • Осваиваюсь на форуме
  • 31
  • 7 / 0
Re: Авторизация через социальные сети
« Ответ #10 : 26.10.2012, 07:40:33 »
  • Добавлен плагин авторизации через Goolge
  • Добавлен плагин авторизации через Яндекс
  • Аватарка из одноклассников скачиваются на сайт и показывается нормально, а не заглушкой из одноклассников
  • Ссылки на инструкции по настройке в админке
  • Адаптация для работы с Joomla 3.0
  • Добавлен шаблон в модуле авторизации в стиле Joomla 3.0

ifx напишите мне в лс или на почту, какой именно функционал требуется от интеграции. Может мой компонент и не подойдёт. У меня регистрация автоматическая и если нет email(twitter,вконтакте, одноклассники), то генерируется на основе логина фэйковый. А для интернет магазина покупатель с невалидным email не думаю, что хорошая идея.
*

VampiRUS

  • Осваиваюсь на форуме
  • 31
  • 7 / 0
Re: Авторизация через социальные сети
« Ответ #11 : 14.11.2012, 16:33:45 »
Добавлена интеграция с JomSocial
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Форум с информированием через вк

Автор inki

Ответов: 0
Просмотров: 1485
Последний ответ 31.08.2016, 17:52:11
от inki
Социальные кнопки JL Like pro

Автор DeniTornado

Ответов: 0
Просмотров: 2098
Последний ответ 18.09.2015, 23:08:31
от DeniTornado
Подобие социальной сети

Автор vvsik

Ответов: 2
Просмотров: 1880
Последний ответ 23.08.2015, 15:59:44
от saharin88
Какие компоненты использовать для соц сети?

Автор SimplyWeb

Ответов: 1
Просмотров: 1960
Последний ответ 05.08.2015, 19:11:59
от Sulpher
Социальные комментарии JL comments

Автор UN_Tony

Ответов: 1
Просмотров: 1492
Последний ответ 07.01.2015, 21:24:47
от voland