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

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Много, много вопросов по скорости работы сайта всегда было и есть, но вот интересный аспект, про который думал, но не столь глобально Латентность при загрузке веб-страниц

Из всего множества других вопросов этой темы есть один, любимый SEOшниками - контент раньше всего. То есть клиент при отключенных стилях\скриптах получит телефон, название сайта, корзину, главное меню (часто верхнее горизонтальное) ниже всего контента, придется крутить.

Здесь же
- клубные\неоптимизированные шаблоны с over 20-30 скриптов\стилей
- неприятие CDN (встречалось и на этом форуме и вроде не от новичков)
- "преимущества" дивной верстки перед табличной (сайт в таблице без стилей\скриптов отобразится базово как надо).
- ну и так далее

В комментах на хабре есть такая мысль
Цитировать
когда основной сервер «мозг» русского сайта стоит за границей, а сервера со статикой (картиночки, медия, документы, файлы) — размещены ближе к пользователю, в каком-то местном дата-центре
Как это реализовать в связке с нашим движком? Только отдельными расширениями? Кто-нибудь подобное практикует?

Понятно, что для 99.9% сайтов это не актуально, но бывают же проекты. Судя по опыту у нас все "крупные" проекты ограничиваются nginx, сжатием\оптимизацией стилей и все
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Jquery - с Google, сервер для русскоязычных - в Москве, для конкретного региона - крайне желательно именно в этом регионе.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
И да, о насколько крупном проекте речь?
100 человек - одно, 10к - другое, а 1М - уже третье.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
И да, о насколько крупном проекте речь?
ну к примеру 50 кило-уников день
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
ну к примеру 50 кило-уников день
Ну это нагрузка одного сервера, разворачивать ради такого трафика целую межрегиональную сетку - както бессмыссленно.

Если конечно речь о страничках, а не аудио\видео..
*

Alldar

  • Завсегдатай
  • 1504
  • 195 / 1
Цитировать
Как это реализовать в связке с нашим движком? Только отдельными расширениями? Кто-нибудь подобное практикует?
У JA есть расширение которые автоматически всю статику(не уверен что всю) переносит на Amazon

У NoNumbers есть еще такое подобное http://www.nonumber.nl/extensions/cdnforjoomla
*

Alldar

  • Завсегдатай
  • 1504
  • 195 / 1
у Amazon CloudFront 5 серверов в ЕС, 3 в Азии (это ближе тем кто на Дальнем востоке), мне кажется это лучше чем может предложить Hetzner
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
у Amazon CloudFront 5 серверов в ЕС, 3 в Азии (это ближе тем кто на Дальнем востоке), мне кажется это лучше чем может предложить Hetzner
Это кажется.
До Азии пинги вообще как до Австралии, у многих с Дальнего Востока до сих пор траф идет через Москву.
Хетцнер - 40 мс Москва, 100 Урал, Сибирь - больше 100 (то есть неприемлимо).
Америка - уже 250, что совсем никуда не годно.
ihc (в подписи) - 10 мс Москва, 40 - Урал, даже для Сибири вполне норм (70-80мс)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Сколько должна стоить разработка сайта?

Автор Мария13

Ответов: 5
Просмотров: 662
Последний ответ 03.08.2022, 14:32:42
от web3.0
Настройка сайта на шаблоне Vina Orion

Автор Proka

Ответов: 15
Просмотров: 1384
Последний ответ 04.08.2020, 17:00:46
от khan-alex
Нужна программа для сайта, где можно было в онлайне проводить какие-нибудь финан

Автор Alikos

Ответов: 1
Просмотров: 732
Последний ответ 11.10.2018, 01:05:53
от voland
Перенос текста из одной страницы сайта в форму другой страницы

Автор D-Nik Lubny

Ответов: 0
Просмотров: 1062
Последний ответ 18.03.2018, 22:10:40
от D-Nik Lubny
Дублируется адрес сайта при формировании ссылки если используется ssl

Автор denism300

Ответов: 0
Просмотров: 937
Последний ответ 08.11.2017, 19:47:25
от denism300