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

sashokmaximus

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Всем добрый день!
прошу помочь с проблемой - кликаю по страницам каталога VirtueMart - не переходит - просто идет обновление страницы и все.
ссылка на каталог:
http://sitegroup.jino.ru/index.php/component/virtuemart/view/category/virtuemart_category_id/2/start/10
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

sashokmaximus

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
кроме этой ошибки все нормально работает
Спойлер
[свернуть]

замнил на
$("style_icon-1") is null {
      e = new Event(e).stop();
      if (style_1) style_1.dispose();
      var file = $template_path+'/css/style1.css';
      new Asset.css(file, {id: 'style1'});
      style_1 = $('style1');
      new Cookie.write('jm_style_business-marketing','1',{duration: 200,path: "/"});
      });

также не работает(((
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
вы меня неправильно поняли у меня переходы происходят и я попадаю на страницы категорий и товаров
просто указал вам на ошибку которая была в отладчике
*

sashokmaximus

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
вы меня неправильно поняли у меня переходы происходят и я попадаю на страницы категорий и товаров
просто указал вам на ошибку которая была в отладчике

как у вас происходит переход если у меня этого не получается сделать?
вы про это:     В начало     Назад     1     2     3     Вперёд     В конец

?
я нажимаю на 1 2 3 - нет перехода. другие кнопки тоже не работают. клиент тоже не может у меня(((
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Все теперь понял. Смотрите ссылки формируются и разные. Вы роутер или .htaccess правили?
*

sashokmaximus

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Все теперь понял. Смотрите ссылки формируются и разные. Вы роутер или .htaccess правили?

я просто изменил htaccess.txt на .htaccess 
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

sashokmaximus

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
попробуйте включить SEF в настройках сайта. Почистите кеш

читаля я про это - пробовал. суть - после ее включения у меня сайт не работает -- все съезжает куда то - вид меняется сайта дико и ссылки не работают все.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Дублируются страницы карточке товара и категорий

Автор djed9

Ответов: 3
Просмотров: 883
Последний ответ 28.09.2020, 05:43:57
от rsn
Неправильная обработка страницы 404 в VirtueMart

Автор d0ublezer0

Ответов: 2
Просмотров: 1391
Последний ответ 03.11.2017, 09:47:13
от d0ublezer0
Не удаляется товар в корзине (беспрерывное обновление страницы)

Автор wave2013

Ответов: 1
Просмотров: 917
Последний ответ 04.07.2017, 17:05:29
от wave2013
Страница корзины дублирует контент с главной страницы

Автор oleg9500

Ответов: 0
Просмотров: 778
Последний ответ 22.03.2017, 19:55:55
от oleg9500
Смена названия "joomla" при скачивание pdf со страницы товара VirtueMart 3

Автор andrey222

Ответов: 0
Просмотров: 925
Последний ответ 24.12.2016, 18:16:24
от andrey222