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

Extalionez

  • Осваиваюсь на форуме
  • 36
  • 5 / 0
Доброго всем времени суток!
Возникла необходимость менять цену в зависимости от кол-ва товаров и свободного аттрибута(например цвета). То есть например от 1-5 платьев белого цвета стоят 700руб., а 1-5 платьев зелёного уже 1000руб. И так далее
6-25 белого 650руб./штука.
6-25 зелёного 900 руб./штука.
В общем буду признателен решению.
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
дополнительные цены
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Extalionez

  • Осваиваюсь на форуме
  • 36
  • 5 / 0
дополнительные цены
А подробнее?)
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Extalionez

  • Осваиваюсь на форуме
  • 36
  • 5 / 0
http://prntscr.com/34lra4
Ну это понятно. Но как для каждого кол-ва указать свой аттрибут? Потому что если указать просто аттрибут зелёный цвет, цену для него, то от изменения кол-ва на странице товара происходит совсем уж безбашенный бред
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
для каждого атрибута будет срабатывать условия кол-во % скидки
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Extalionez

  • Осваиваюсь на форуме
  • 36
  • 5 / 0
для каждого атрибута будет срабатывать условия кол-во % скидки
В том то и проблема. Мне нужно конкретное изменение цены указать для каждого атрибута. То есть если цвет зелёный, то для него своя таблица дополнительных цен, если белый, то своя таблица. Может есть хотя бы расширение для этого какое-нибудь?
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
не встречал.
значит делайте не атрибутами а отдельными товарами.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод характеристик товара в списке товаров (категории)

Автор voland

Ответов: 4
Просмотров: 3729
Последний ответ 17.09.2022, 13:21:03
от victorantoniak
Как передать значение атрибута в свободный атрибут?

Автор votuksol

Ответов: 3
Просмотров: 2703
Последний ответ 26.02.2021, 08:50:38
от kit2m2
Свободный атрибут в корзине

Автор anny_k

Ответов: 7
Просмотров: 1400
Последний ответ 22.02.2020, 10:17:01
от anny_k
Вывести в списке товаров атрибуты

Автор Taatshi

Ответов: 41
Просмотров: 10336
Последний ответ 17.02.2020, 17:12:16
от resens
Можно ли удалить выбранный атрибут в корзине?

Автор Ariadna

Ответов: 6
Просмотров: 898
Последний ответ 06.02.2020, 00:37:04
от Ariadna