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

itbc

  • Захожу иногда
  • 236
  • 1 / 2
Всем доброго дня, тут возник вопрос, и надеюсь получить квалифицированный ответ . Суть такова, уже несколько лет пользуюсь стандартным компонентом перенаправления ссылок в Joomla 3 , и тут что то глянул сколько у меня их накопилось порядка 25 000 ...  вопрос , это вообще не мешает работе Joomla ?
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: По поводу перенаправления ссылок
« Ответ #1 : 21.04.2021, 12:44:03 »
Это забивает базу, т.к. в ней сохраняются все запросы на несуществующие страницы. Я не рекомендую этот компонент включать, потому что вы все равно его работу не контролируете. Для перенаправления проще прописать редирект в .htaccess
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

itbc

  • Захожу иногда
  • 236
  • 1 / 2
Re: По поводу перенаправления ссылок
« Ответ #2 : 21.04.2021, 12:51:06 »
Это забивает базу, т.к. в ней сохраняются все запросы на несуществующие страницы. Я не рекомендую этот компонент включать, потому что вы все равно его работу не контролируете. Для перенаправления проще прописать редирект в .htaccess
Спасибо за разъяснение, забитие базы как то влияет на работу сайта ? сайт де факто летает без проблем. Что касается редиректа в .htaccess , ну тогда файл будет огромным.. последняя битая ссылка имеет id 189267 не могу же я прописывать всё это количество в .htaccess. Может если например явно сформированные ботами ссылки ( длинные и бессмысленные) просто удалять ?  повторяется ли их возникновение вновь ?
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: По поводу перенаправления ссылок
« Ответ #3 : 21.04.2021, 12:59:20 »
На скорость почти не влияет, влияет только на размер базы, и как следствие на выделенную вам хостером квоту.
Дать ответ вам по поводу редиректов затрудняюсь, потому что не понимаю, откуда такой объем редиректов. Вы что, все подряд ссылки туда хотите внести?  Ну для примера: зашел к вам бот-взломщик, в его базе порядка 1млн эксплойтов к разным движкам. И он не разбирается, на каком движке ваш сайт, он тупо начинает эти эксплойты перебирать со скоростью 10 ссылок в секунду. И все это пишет в себя ваш компонент. Вы потом хотите каждой такой ссылке показать, где у вас страница 404?

Обычно достаточно устранить дубли страниц. Этот компонент стоит у вас?
« Последнее редактирование: 21.04.2021, 13:07:24 от SeBun »
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

itbc

  • Захожу иногда
  • 236
  • 1 / 2
Re: По поводу перенаправления ссылок
« Ответ #4 : 21.04.2021, 13:37:02 »
Нет , я пользуюсь стандартным компонентом в пакете Joomla. То есть ботами генерированные ссылки просто удалять ?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Формирование ссылок для компонента Joomla Tags

Автор stepan39

Ответов: 6
Просмотров: 3780
Последний ответ 05.02.2023, 15:22:13
от tweenpix
Компонент музыки из базы или со ссылок

Автор powerful888

Ответов: 0
Просмотров: 741
Последний ответ 08.07.2020, 19:22:02
от powerful888
Highlighter GK5 - "залипшая" ссылка на первом круге ротации ссылок.(хелп)

Автор DKsN

Ответов: 1
Просмотров: 1275
Последний ответ 28.05.2015, 18:47:22
от DKsN
Использование ссылок в заголовках модулей Tabs

Автор vik212

Ответов: 1
Просмотров: 1252
Последний ответ 01.11.2014, 21:25:27
от vik212
Модуль для корректной вставки кода контекстных ссылок Sape для Joomla 2.5

Автор Slidy2014

Ответов: 6
Просмотров: 3418
Последний ответ 13.03.2014, 23:34:00
от Slidy2014