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

Система, Joomla 1.0.13-Stable-Full и VirtueMart 1.0.12, Apache/1.3.37 (Unix) PHP/4.4.6...

Когда создаю или редактирую, категорию или товар, при нажатии на кнопку Save все изменения сохраняются но снизу страницы выводит варнинг:
__________________________________________________________________________________________________________

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /sata1/home/users/shops/includes/joomla.php:4145) in /sata1/home/users/shops/includes/joomla.php on line 800

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /sata1/home/users/shops/includes/joomla.php:4145) in /sata1/home/users/shops/includes/joomla.php on line 800

__________________________________________________________________________________________________________

и при переходе на любую ссылку сразу выкидывает страницу авторизации, даже при простом обновлении тойже страницы вылетает авторизация. В режиме дебаг, смотрел вроде сессия и переменные есть, все нужные директории вратейбны, все настройки зеленые  ^-^. Очень уж не хочется авторизироватся после добавления каждого товара  :-X, время жизни сессии админа 5800 секунд, пробовал и IE и Opera одинаково, думаю криво реализована функция сохранения в VirtueMart 1.0.12 в списке товаров и дерево каталогов, выслушаю любые идеи, предложения короче  !!!???!!!
*

metaname

  • Захожу иногда
  • 61
  • 2 / 0
Это глюк бывает если открыть из админки "сайт-прсмотр в новом окне". Попробуй админку и сайт смотреть в разных браузерах.

У меня такая же проблема незнаю что с этим сделать !!!???!!!

*

ksergeys

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
http://forum.virtuemart.ru/index.php?topic=1093.msg5024#new пробовали патч на джумлу наложить?
у меня такая же проблема, пробовал эту заплатку на 13-ую джумлу, на локалке когда пробуешь все работает, а вот на сайт когда кидаешь, то вообще авторизация отключается и на админке и на сайте.
*

klumpers

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Во-первых, что мешает обновить J 1.0.13 до 1.0.15 и Virtuemart тоже?
Во-вторых, не используйте леваки типа RE, LE, BMPE.
Проблема выкидывания решалась по-моему то ли в 14, то ли в 15 виртумарте. На данный момент в связке 15+15 выкидывает только при первом заходе в компонент виртумарт (и то не на всех хостингах), что в принципе терпимо.
*

ksergeys

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Во-первых, что мешает обновить J 1.0.13 до 1.0.15 и Virtuemart тоже?
Во-вторых, не используйте леваки типа RE, LE, BMPE.
Проблема выкидывания решалась по-моему то ли в 14, то ли в 15 виртумарте. На данный момент в связке 15+15 выкидывает только при первом заходе в компонент виртумарт (и то не на всех хостингах), что в принципе терпимо.
ну про леваки это ты зря... связка Джумла 12LE и 12 магазин работают стабильно на любых серверах... это проблема не в магазине, а в движке джумлы, заплатки же все ставят на движек а не на магазин... на 12-ой джумле все магазины работают стабильно... а начиная с 13-ой джумлы начинается вот такая ерунда... ошибку же выводит в файле joomla.phph это же файл джумлы а не магазина... и если ты посмотришь как прописан текст в этом файле в пределах +-20строк, то увидишь что это место прописано начиная с 13-ой джумлы совсем по-другому....
« Последнее редактирование: 28.03.2008, 12:39:19 от ksergeys »
*

klumpers

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
ksergeys
Цитировать
связка Джумла 12LE и 12 магазин работают стабильно на любых серверах...
А где для нее обновления безопасности, регулярно выпускаемые для официальных Joomla и VM?
Цитировать
это проблема не в магазине, а в движке джумлы, заплатки же все ставят на движек а не на магазин...
Ошибаешься. То, что в Joomla 1.0.13 изменился механизм шифрования паролей, не означает, что джумлу будут подстраивать под компонент Virtuemart. Компонент будут подстраивать под движок. Но никак не наоборот.
Проблема описана здесь, и хотфикс там же.
http://virtuemart.net/index.php?option=com_content&task=view&id=257&Itemid=57
Только это для пользователей официального VM. Пользователям левака - лазить по форумам, искать нужный код для скриптов.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Активный пункт mainmenu для категории VirtueMart

Автор sashgera

Ответов: 11
Просмотров: 3374
Последний ответ 13.08.2020, 16:43:22
от sivers
Модуль виртуемарт "Категории товаров"

Автор Privat

Ответов: 25
Просмотров: 23714
Последний ответ 17.12.2012, 15:12:07
от nazar86
Как сделать авторизацию?

Автор Karyuudo

Ответов: 4
Просмотров: 5237
Последний ответ 02.10.2011, 01:09:10
от Overmort
Не могу загрузить изображение категории

Автор azizovslava

Ответов: 6
Просмотров: 4479
Последний ответ 11.04.2011, 20:20:21
от biofreez
Сортировка по производителю в категории товаров

Автор palexa

Ответов: 9
Просмотров: 6126
Последний ответ 08.02.2009, 14:22:41
от maksua