Новости 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

Голосование

Нужен ли отдельный раздел под новый virtuemart 1.9/2.0

Да
45 (93.8%)
нет
3 (6.3%)

Проголосовало пользователей: 48

0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 3711 Просмотров
*

Kuzmitch

  • Захожу иногда
  • 150
  • 7 / 0
Неплохо было бы раздел новый создать под VirtueMart 1.9, 2.0
Т.к. Магазин скоро выйдет - уже есть вагон вопросов, уже есть некоторые решения проблем а постить некуда.

По моему очень глупо создавать темы об этой версии в форумах о VirtueMart 1.1
Так как это отдельная ветка и будет путаница в темах...
Да и найти будет проще если разнести в разные разделы.

Ув. Админу. По моему пора создавать :)
*

aspektra

  • Новичок
  • 5
  • 1 / 0
  • Уххх ты!
Ждём-с новую версию) И вопросы будут, так что надо)
*

alfonse

  • Захожу иногда
  • 64
  • 2 / 0
Вопросы уже есть например как убрать поле Производитель там где можно выбирать их, оно мне не нужно
*

constantined

  • Новичок
  • 7
  • 0 / 0
Присоединяюсь. Раздел очень даже нужен.
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
чувствую как только он уже окончательно заработает только тогда появится новая ветка!
да это и лучше я думаю
Смотрю....
*

GieNa

  • Новичок
  • 3
  • 0 / 0
А я бы уже добавил новую ветку, потому как уже тем с 1.9.8 создавали огромное кол-во и народ скоро путаться начнет. Да и модераторам потом проблема все эти темы крыжить и переносить.
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
Если Вы заметили, когда вышла ветка 1.1.х - не стали выносить её в отдельную ветку, просто в заголовках тем писали о какой версии речь. Есть ли смысл делить сейчас?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Ветку по сути сделать несложно, но при этом проблемы никуда не денутся.  Большая часть новичков, задавая вопросы, будут смотреть на название раздела (например, Установка и обновление), а не на раздел с версией VM. Но если у модераторов данного раздела есть мнение, что раздел все-таки нужен, и им так будет проще, давайте добавим. Но тут вопрос, как именно. Есть 2 варианта:

1. В разделе VirtueMart мы создаем 2 подраздела: VirtueMart 1.1 и VirtueMart 2.0, в первый переносим все существующие разделы (Установка и обновление, Общие вопросы и ошибки, Дизайн и оформление и т.д.). А во-втором создаем такую же структуру.

2. В каждом из дочерних разделов (Установка и обновление, Общие вопросы и ошибки, Дизайн и оформление и т.д.) создаем подразделы по версиям: VirtueMart 1.1, VirtueMart 2.0 (или можно кратко VM 1.1, VM 1.9, VM 2.0). Затем, существующие темы из разделов перебрасываем в ветки, посвященные 1.1.

У каждого из подходов есть плюсы и минусы. Первый - позволяет общаться в подразделе по конкретной версии VM, не отвлекаясь на старые версии.

Второй подход требует создания большего количества подразделов, несколько большей трудоемкости, зато более удобен с точки зрения тематичности вопросов - т.е. зашли в ветку про методы оплаты, а там, сначала посмотрели решения для 1.1, потом для 2.0. И в этом смысле он легче для восприятия, ибо сначала выбираем тематику вопроса, а потом версию, для которой спрашиваем. А в корне, каждого их тематических подразделов, было бы логично сделать темы-навигаторы, что-то типа тематических FAQ, с ссылками на решения вопросов для каждой из версий.

Мне больше нравится второй вариант, но готов обсудить любые предложения.
*

constantined

  • Новичок
  • 7
  • 0 / 0
Для VM2 пока не нужно столько разделов, достаточно одного, imho.
Вроде "VirtueMart 2 - Общие вопросы и ошибки" сразу же под разделом "Общие вопросы и ошибки".
А через полгода сбросить все темы VM1 в архив *. Всё равно над веткой 1 разработка уже не ведётся.

* с сохранением структуры и возможностью добавления постов
« Последнее редактирование: 24.11.2011, 11:32:21 от constantined »
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
разработка не ведется, но очень многие его использовали и продолжают использовать, и вопросы у людей возникают.
*

Kostya

  • Новичок
  • 2
  • 0 / 0
Для VM2 пока не нужно столько разделов, достаточно одного, imho.

разумно, мы на своих форумах всегда так делаем. В любом случае нужна более определенная систиматизация.
*

constantined

  • Новичок
  • 7
  • 0 / 0
vm 2 вышел, раздела нет. пользователи в панике :)
*

Stechkin

  • Новичок
  • 8
  • 1 / 0
Пора бы сделать раздел vm 2.0, когда будет?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенос с 1.5 на 3.5 + VirtueMart

Автор andrey488

Ответов: 4
Просмотров: 4015
Последний ответ 07.03.2017, 01:19:33
от SeBun
Проблема с установкой VirtueMart 1.1.4

Автор Tell

Ответов: 10
Просмотров: 8432
Последний ответ 02.01.2017, 17:28:01
от pomogu_chem_smogu
Проблемы с установкой VirtueMart

Автор inka

Ответов: 14
Просмотров: 9186
Последний ответ 03.09.2015, 01:44:49
от Amigos
mod VirtueMart latestprod способствовал появлению белого экрана

Автор smogrom

Ответов: 21
Просмотров: 4666
Последний ответ 15.01.2015, 11:50:23
от Schumaker
Русификация VirtueMart. Как ее сделать?

Автор Koriolan

Ответов: 52
Просмотров: 56486
Последний ответ 05.11.2014, 15:37:43
от Jiggy