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

vomitting

  • Захожу иногда
  • 80
  • 0 / 0
Здравствуйте, проблема следующего рода, всем известно, что чем больше статей на сайте, тем больше думает сервер, так вот на сайте предположим 90000 статей, с использованием стандартного com_content, Joomla я так понимаю считывает все таблицы и колличество статей привязанных к главной, предположим что их 90000 и все привязаны, нажимаем главная и пошла загрузка, обход всей таблицы с content_frontpage и сам contetnt, возможно ли сделать так чтобы статьи выводились другим путем, более отимизированным, это кстати касается так же простого раздела, если там более 200000 статей, ладно дело сервера, обновил я сервер, все сделал, апач, мускул, PHP, отлично настроены, к тому же если оставлять наглавной только 1000 статей грузиться сайт за 1 -2 секунды, думаю это и так ясно.

Данный вопрос очень важен, если кто-то действительно может помочь, прошу написать мне, либо в профиль на этом форуме, либо здесь в теме.
Решение или какие то методы оптимизации оплачу, с этим проблем не будет.

Помощь нужна специалиста.

 *DRINK*
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Думаю, что тут нужны серверные решения в плане оптимизации. Попробуйте к era обратиться. Он мне настраивал площадку для новостного портала, где как раз скоро уже 15 000 статей.
*

vomitting

  • Захожу иногда
  • 80
  • 0 / 0
Можно даже немного уточнить, хочется сделать оптимизацию controller.php таким образом, чтобы выводилось на главной только 20 процентов материалов, и именно на 20 % просчет останавливался, либо когда нажимаешь на ГЛАВНАЯ, продумывались не все таблицы content_fronpage а лишь 2% от 20% всех новостей на главной. Воообщем чтоб Joomla не просчитывала сразу колличество страниц, а считала их тогда когда переход состоялся то есть я тыкаю на вторую страницй главной или раздела и она считает лишь ту страницу на которую я нажал а не все которые там есть
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
странно но не понимаю суть проблемы
вариант кэширования с помощью Nginx на фронте вас не устраивает, если идет кэширование страница формируется с кэша
запросы только новые которых еще нет в кэше
или все таки не понимаю
*

vomitting

  • Захожу иногда
  • 80
  • 0 / 0
часто обновляемы сайт садить на нгинкс с кешем, и как авторы будут видет свои новые материалы, меня интеерсует именно внутре-кодовая оптимизация, за решение готов заплатить 3000 р, нужно решить проблему именно в коде.
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Цитировать
часто обновляемы сайт садить на нгинкс с кешем, и как авторы будут видет свои новые материалы
авторы будут видеть, как и все остальные, и это работает как не странно
*

vomitting

  • Захожу иногда
  • 80
  • 0 / 0
Пожскажите как это сделать нгинкс уже работает
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla накешировала 200Mb в директорию cache/page при отключенном кешировании, что за ...?

Автор Marygold

Ответов: 12
Просмотров: 7117
Последний ответ 27.09.2023, 09:23:54
от XFQDesNik
Joomla и Amazon S3

Автор Ghost_370

Ответов: 14
Просмотров: 11961
Последний ответ 07.04.2019, 09:38:02
от powerful888
Соц.иконки добавить, Joomla 1.5.26

Автор nuon

Ответов: 1
Просмотров: 7457
Последний ответ 04.03.2018, 21:34:56
от nuon
Как сделать JSON-LD микроразметку для Joomla 1.5

Автор Amigo9876

Ответов: 1
Просмотров: 6838
Последний ответ 05.01.2018, 21:54:43
от krot
На сайте пропал автоматический ресайз картинок для вывода на главной

Автор mimoza

Ответов: 6
Просмотров: 2230
Последний ответ 30.11.2017, 09:02:25
от SeBun