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

bax

  • Захожу иногда
  • 68
  • 1 / 1
  • Я только учусь...
Помогите написать компонент или мамбот, всю структуру я уже продумал... Кстати многие искали нечто подобное на форуме

Задача: сделать так чтобы каждому юзеру выводились статьи предназначенные только ему
например: юзер1 - статья1, стаья2
               юзер2 - статья2 
               юзер3 - статья3

кому какая стаья должна показываться выбирает админ в бэкенде
у компонента будет использоваться одна табица, например users_content с двумя полями: id_user, id_content

я мог бы сделать чтобы отображалась в простом скрипте все это, но материал то может быть с картинками, а выводить статью в виде материала я не умею, т.е. со всеми картинками, с именем автора и т.д.

и второе что я еще не не умею: админ должен выбирать того юзера и статью которая предназначена данному юзеру и все это делать в админ панели компонента. В принципе ничего сложного для тех кто уже программировал в Joomla я не вижу, если бы мог я бы написал, уже пытался, но не клеится у меня...

помогите пожалуйста. заранее спасибо!
*

bax

  • Захожу иногда
  • 68
  • 1 / 1
  • Я только учусь...
Re: Каждому пользователю своя статья
« Ответ #1 : 17.11.2008, 06:25:36 »
Неужели, никто не может помочь? :(
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Re: Каждому пользователю своя статья
« Ответ #2 : 17.11.2008, 07:41:02 »
Можете добавить в content дополнительное поле в которую будете ставить id пользователя, а на выведении материалов во фронтпейдже ставите проверку кто пришол по принципу $my->id и выдавать ему его статью.
*

bax

  • Захожу иногда
  • 68
  • 1 / 1
  • Я только учусь...
Re: Каждому пользователю своя статья
« Ответ #3 : 17.11.2008, 08:30:33 »
эту проверку выполнять при глобальном выводе? Т.е. не только в моем компоненте, но и во всех выводах материала?

А пользователя выбирать при создании материала?
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Re: Каждому пользователю своя статья
« Ответ #4 : 17.11.2008, 08:44:44 »
эту проверку выполнять при глобальном выводе? Т.е. не только в моем компоненте, но и во всех выводах материала?
(Зачем делать компонент если все решается маленьким хаком?)
А пользователя выбирать при создании материала?(ДА)
Если пользователь не выбран, то показывать всем ;)
*

bax

  • Захожу иногда
  • 68
  • 1 / 1
  • Я только учусь...
Re: Каждому пользователю своя статья
« Ответ #5 : 17.11.2008, 08:53:47 »
ок! Я найду тот скрипт где выполняется редактирование материала и допишу там выбор юзера в админпанели
а где дописать вывод материала, т.е. это:
Код
$my->id

в content.php?
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Re: Каждому пользователю своя статья
« Ответ #6 : 17.11.2008, 08:54:24 »
Да
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Re: Каждому пользователю своя статья
« Ответ #7 : 17.11.2008, 08:56:04 »
Простенькое условие:
Проверяем если статье присвоен юзер, то сверить его с челом который в данное время хочет увидеть эту статью, если все совпадает, то выдать ему результат, если нет, то показать общедоступные статьи!
*

bax

  • Захожу иногда
  • 68
  • 1 / 1
  • Я только учусь...
Re: Каждому пользователю своя статья
« Ответ #8 : 17.11.2008, 08:56:53 »
Спасибо  :D! Попробую, как получится напишу результаты!
*

bax

  • Захожу иногда
  • 68
  • 1 / 1
  • Я только учусь...
Re: Каждому пользователю своя статья
« Ответ #9 : 17.11.2008, 16:57:38 »
ShadowXak вам не трудно показать строчку в в content.php где нужно дописать? Мучаюсь не получается, честно...
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Re: Каждому пользователю своя статья
« Ответ #10 : 17.11.2008, 17:04:16 »
Ну если только завтра, т.к. у меня дома нету сервера под рукой
*

bax

  • Захожу иногда
  • 68
  • 1 / 1
  • Я только учусь...
Re: Каждому пользователю своя статья
« Ответ #11 : 17.11.2008, 17:07:24 »
а если я вам пхп файл скину?
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Re: Каждому пользователю своя статья
« Ответ #12 : 17.11.2008, 17:20:26 »
не не надо, у меня нет подсветки кода - сложно будит, дождись уж понедельника, а пока сам поковыряй :)
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Re: Каждому пользователю своя статья
« Ответ #13 : 17.11.2008, 17:28:54 »
во вспомнил ;)
найди слейдующее
function show( &$row, &$params, &$access, $page=0 ) {
она выводит материал ;)
*

bax

  • Захожу иногда
  • 68
  • 1 / 1
  • Я только учусь...
Re: Каждому пользователю своя статья
« Ответ #14 : 17.11.2008, 18:04:27 »
Хорошо! Буду ждать!
*

bax

  • Захожу иногда
  • 68
  • 1 / 1
  • Я только учусь...
Re: Каждому пользователю своя статья
« Ответ #15 : 19.11.2008, 06:11:09 »
Поможите?
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Re: Каждому пользователю своя статья
« Ответ #16 : 19.11.2008, 07:12:35 »
постучи в аску
*

bax

  • Захожу иногда
  • 68
  • 1 / 1
  • Я только учусь...
Re: Каждому пользователю своя статья
« Ответ #17 : 19.11.2008, 07:19:50 »
ок
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Личный блог каждому пользователю

Автор palexa

Ответов: 9
Просмотров: 3175
Последний ответ 15.06.2009, 09:58:36
от palexa
Сообщение каждому новому зарегистрированному

Автор Aiden

Ответов: 2
Просмотров: 2022
Последний ответ 18.05.2009, 23:29:17
от Aiden
Как сделать чтобы новость-статья на главной странице открывалась чисто, без модулей?

Автор MS

Ответов: 9
Просмотров: 3381
Последний ответ 22.09.2008, 11:52:35
от Melnikoff
Как закрыть доступ конкретному пользователю к конкретному материалу

Автор alt_ma

Ответов: 2
Просмотров: 2596
Последний ответ 18.09.2008, 09:13:42
от Sulpher
После регистрации пользователю не приходит письмо.

Автор Aiden

Ответов: 4
Просмотров: 3019
Последний ответ 14.04.2008, 18:05:28
от nikola_blin