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

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Подскажите, пожалуйста:
внизу каждой статьи добавляется модуль (стандартный Материалы - Новости), рандомно выводящий три заголовка-ссылки на другие статьи (иногда выводится заголовок статьи, которую читаем...).
Вопрос: есть ли толк от такого модуля в плане перелинковки? Оно же каждый раз формирует новые ссылки.

Спасибо.
*

voland

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

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Зависит от сайта.

Интересно. А можно пример такой зависимости? Имеется ввиду тематика сайта или что-то другое?
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Еще зависит от цели, задайте себе вопрос, зачем так делать?
1. Для людей
2. Для машин
Если тематика сайта располагает и ссылки впишутся в концепцию, людям будет удобнее ходить по сайту, то ставьте.
Для машин такой метод позволяет загнать больше страниц в индекс, после того как Яндекс стал смотреть на время жизни ссылки, перекачка веса таким способом стала бессмысленна.
Я знаю только то, что ничего не знаю
*

skai

  • Moderator
  • 1198
  • 153 / 1
  • skaiseo
рандомно меняющиеся ссылки - неэффективно потому что Яндекс это бесит, так как это один из способов по вычислению доноров и вы портите ему всю мазу мигая ссылками внутри своего сайта.

эффективно - проставлять ссылки на дополняющие или похожие материалы.
Наполнение вашего сайта - 1т.р. стр. (текст, изображения, мета, перелинковка). Гарантия высокого ранжирования. SEO консультация в подарок.
----------------------------------------------------------------------------------------------
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
рандомно меняющиеся ссылки - неэффективно потому что Яндекс это бесит, так как это один из способов по вычислению доноров и вы портите ему всю мазу мигая ссылками внутри своего сайта.

эффективно - проставлять ссылки на дополняющие или похожие материалы.
По опыту?
А то года 3 назад в Google такое ох какие бонусы давало ))
*

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Благодарю за ответы, уберу-ка этот модуль.
я в этой области мало что знаю, чем больше читаешь и чего-то узнаёшь, тем больше вопросов, соответственно )
*

skai

  • Moderator
  • 1198
  • 153 / 1
  • skaiseo
По опыту?
А то года 3 назад в Google такое ох какие бонусы давало ))
- да, раньше работало и сейчас может сработать, только палка о двух концах.
Наполнение вашего сайта - 1т.р. стр. (текст, изображения, мета, перелинковка). Гарантия высокого ранжирования. SEO консультация в подарок.
----------------------------------------------------------------------------------------------
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Каким плагином можно закрыть внешние ссылки?

Автор gorbi_U

Ответов: 4
Просмотров: 2696
Последний ответ 25.02.2023, 02:29:35
от olegon
вопрос к решению из FAQ. Вместо отсутствия ссылки отсутствует название активного пункта меню

Автор Loh

Ответов: 5
Просмотров: 2367
Последний ответ 10.04.2022, 11:04:26
от fiksius
Google не индексирует страницы через ajax ссылки

Автор illimited

Ответов: 0
Просмотров: 1363
Последний ответ 31.03.2022, 23:53:05
от illimited
Как вывести в сниппете название статьи, а потом название сайта?

Автор gorbi_U

Ответов: 0
Просмотров: 1101
Последний ответ 18.01.2022, 18:29:22
от gorbi_U
Работают ли сейчас ссылки для продвижения?

Автор web1

Ответов: 1
Просмотров: 830
Последний ответ 20.11.2021, 17:26:05
от Byzi