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

Zyklonss

  • Осваиваюсь на форуме
  • 24
  • 2 / 0
Joomla! 1.5.26, каталог на SOBI2. Позавчера при редактировании записи в админке каталога зависает страница и, впоследствии, выдаёт 502 ошибку. Всё остальное, кроме этого, работает.
Хостинг timeweb. Написал хостеру о проблеме, думал, что проблема в устаревшей версии php. Получил ответ: "Проблема заключается в превышении процессом ограничения на использование процессора", предложили откатиться и если не поможет, то перейти на более дорогой тариф, где данное ограничение отсутствует. Откат не помог, также пробовал изменить в панели лимит нагрузки на процессор за дополнительную оплату- также не помогло. Переход на новый тариф- дороговато получается.
Может есть технические решения этого вопроса? Буду рад любой помощи!
*

KKAAZZOO

  • Живу я здесь
  • 2288
  • 119 / 9
Конечно есть, смена хостера.
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Может есть технические решения этого вопроса? Буду рад любой помощи!
Есть, увеличение ресурсов железа. Это дешевле чем что то изобретать.
*

Zyklonss

  • Осваиваюсь на форуме
  • 24
  • 2 / 0
Нужны ещё Ваши советы.
На сайте помимо вышеописанной возникла ещё одна проблема: не всегда было возможно отредактировать объявления на доске объявлений маркетплейс. Боролся я с хостингом так:
1. Откатывал их бэкапы (но они только на 3 дня)- без результата. Делал откат со своего бэкапа (рабочего)- без результата. У меня на локалке именно этих проблем с каталогом и доской объявлений нет.
2. Изменял в панели лимит нагрузки на процессор за дополнительную оплату- также не помогло.
3. Посмотрел по логам и отсёк многих спам-ботов, снизил нагрузку. Суточную не превышал, и по часам всё нормально. Не помогло.
Решился на переезд к другому хостеру. Взял VDS и вот уже второй день не можем одну из двух проблем решить: с доской вроде решилась проблема, а вот с редактированием каталога- без результата.
В поддержке нового хостера предлагали обновить движок до актуальной версии, но уже пробовали кодеры обновиться Joomla до актуальной версии. После этого моды и плагины не хотели нормально работать. Там необходимо очень много переписывать. Я этим займусь, но не сейчас, поскольку дороговато получается.
В поддержке уже спрашивают на какой версии MySQL корректно работает данная версия Joomla? Вот информация со старого хостера: "
Информация о версии: 4.1.14.6, последняя стабильная версия: 4.6.0" И начались тогда проблемы, я написал им, что нужно сменить phpMyAdmin на более новую версию, поскольку раньше проблем не было, но они мне отписали, что проблема не в этом, а в превышении процессом временных ограничений на CPU.
Благодарю за ответы и советы!
*

Zyklonss

  • Осваиваюсь на форуме
  • 24
  • 2 / 0
Хостер решил проблему: были увеличины тайм-ауты для выполнения скрипта на сервере. Теперь так: редактирование в каталоге возможно, уже хорошо. Ошибок не выдаёт. Правда открывает записи и сохраняет изменения около минуты. В Хроме и Opera так. А в ИЕ при редактировании записи редактор выдаёт только html-код, но я в ИЕ и не работаю.
Также хостер посоветовал обновить движок и модули с плагинами. Я согласен, что надо обновиться, и займусь этим чуть позже.
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Правда открывает записи и сохраняет изменения около минуты.
Смотрите что у вас при редактирование тянет из бд, это могут быть всякие селекты категорий и прочий мусор, их надо или переписывать или если не нужны удалять.
*

Zyklonss

  • Осваиваюсь на форуме
  • 24
  • 2 / 0
Смотрите что у вас при редактирование тянет из бд, это могут быть всякие селекты категорий и прочий мусор, их надо или переписывать или если не нужны удалять.
Можете мне по-подробнее про это написать, может сам разберусь.
Заранее благодарю!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Что-то вызывает перегрузку процессора на хостинге hc.ru

Автор skyvlad

Ответов: 9
Просмотров: 1654
Последний ответ 02.02.2017, 09:42:53
от skyvlad
Использование плагина "MP3 Browser"

Автор Nazaretto

Ответов: 157
Просмотров: 31898
Последний ответ 29.07.2015, 03:53:14
от ecolora
Использование стилей в mod_php

Автор tereshok

Ответов: 4
Просмотров: 1529
Последний ответ 26.06.2014, 23:08:01
от Shustry
Использование плагинов в своем компоенете

Автор Joker

Ответов: 1
Просмотров: 1477
Последний ответ 03.11.2012, 18:35:44
от Fedor Vlasenko
Использование тегов в заголовках материалов. Подскажите

Автор Санька

Ответов: 5
Просмотров: 2530
Последний ответ 10.07.2012, 08:31:51
от MadChild