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

klipius

  • Захожу иногда
  • 98
  • 2 / 0
Как организовать продвижение сайта?

Есть два сайт на двух доменах сайт.рф и site.ru, настроен редирект, основной вроде как site.ru. Встает вопрос по продвижению, "вечные" ссылки, партнерские ссылки на какой домен направлять? Это имеет значение вообще то? Отчего собственно вопрос. В "гражданском обществе" рунета хочется пиарить домен сайт.рф, но он не основной, а сделать его основным мне говорят неправильно, т.к. поисковики не особенно дружелюбны к русскоязычным доменам и всякие там еще сложности могут быть...

Спасибо!
« Последнее редактирование: 19.03.2013, 12:29:59 от klipius »
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Ну, в общем правильно говорят. Оставьте как есть - .ru основной, с .рф редирект
*

klipius

  • Захожу иногда
  • 98
  • 2 / 0
Спасибо, от всей души +Plus!  Не чаял завязать диалог... :)

Так и сделаю, в таком разе куда направлять ссылки? На домен site.ru напрашивается, если ссылка НЕявная, ну т.е. баннер например с гиперпереходом или текст с линком встроенным. Но вот если нужно опубликовать где либо название сайта, наиболее удобным для восприятия способом, то тут лучше указать сайт.рф и вопрос в этом случае ссылочный вес на каком домене будет аккумулироваться?
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
все будет аккумулироваться на site.ru, т.к. 301 редирект передает вес
всё, конечно, зависит от вашей ситуации, но я бы совсем не использовала сайт.рф, даже пользователей может запутать (вот оставили вы адрес .рф, пользователь прошел и тут видит, что оказался он на самом деле на .ru, и подумает, - а туда ли он попал....)
*

klipius

  • Захожу иногда
  • 98
  • 2 / 0
спасибо за ответ! :)
использование кирилического домена оправдано относительной сложностью транслитерного написания, а собственно кирилический домен до буквы повторяет торговое наименование компании, так что пользователи сомневаться не будут :)
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Склейте их, а в рекламе можно и рф домен указывать и ру, как вам удобнее
*

Rival

  • Захожу иногда
  • 188
  • 16 / 0
Я сделал к домену .ру еще домен .рф. Со второго 301 редирект на первый. И честно сказать пожалел об этом. Пока Яндекс склеивал их, попал под какой фильтр в нем. В Google регулярный рост позиций, хотя сайтом мало занимаюсь, а в яндексе все 100+.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Google любит новичков, а Яндекс отправляет их в "песочницу"
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Выкиньте домены .рф и не колупайте себе и другим мозг.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как продвигать сайт! (интернет-магазин)?

Автор Kooll5

Ответов: 31
Просмотров: 7450
Последний ответ 07.02.2023, 13:59:57
от Ратник
Один сайт, доступный через два домена (зеркало?)

Автор slepoy

Ответов: 2
Просмотров: 1349
Последний ответ 20.11.2021, 17:50:48
от Byzi
Ссылки на мой сайт не подтягивают фото

Автор MbJaws

Ответов: 7
Просмотров: 1655
Последний ответ 26.10.2020, 13:40:24
от MbJaws
Продвижение по региону

Автор dmtn

Ответов: 6
Просмотров: 1021
Последний ответ 18.10.2020, 04:11:21
от gartes
Site map

Автор Edward_m

Ответов: 19
Просмотров: 2184
Последний ответ 01.08.2020, 19:05:22
от SeBun