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

pvi1

  • Давно я тут
  • 566
  • 16 / 2
Если кому интересно, привожу пример разных списков вывода товаров в шаблоне категории.
1. Создаем новый шаблон категории category_defaullt1.php (уже описано ранее). В нем в самом конце вместо
Код
<?php include(dirname(__FILE__)."/products.php");?>
пишем
Код
<?php include(dirname(__FILE__)."/products1.php");?>
.
 Естественно, создаем файл products1.php.
2. В файле products1.php вместо
Код
include(dirname(__FILE__)."/../".$this->template_block_list_product);
пишем
Код
include(dirname(__FILE__)."/../list_products/list_products1.php");
.
Естественно, в папке list_products создаем файл list_products1.php, а также файл product_1.php.
3. В файле list_products1.php меняем
Код
<?php include(dirname(__FILE__)."/product.php");?>
на
Код
<?php include(dirname(__FILE__)."/product_1.php");?>
.
И в файле product_1.php делаем то, что нам надо.
« Последнее редактирование: 03.04.2017, 18:45:59 от pvi1 »
*

bantell

  • Захожу иногда
  • 93
  • 2 / 0
Re: Разные списки вывода товаров
« Ответ #1 : 28.12.2017, 12:06:26 »
Спасибо за инструкцию, отлично все работает! Остался только один вопрос... кто-нибудь знает как сделать шаблон для КАТЕГОРИИ + ТОВАР ? чтобы при назначении шаблона списка, для всех вложенных товаров подхватывался этот шаблон. А то получается если просто переделать /product/product_XXX - то необходимо каждому товару назначать этот шаблон, что не есть удобно, когда их 150 и они постоянно меняются)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Разные списки вывода товаров
« Ответ #2 : 28.12.2017, 12:47:12 »
кто-нибудь знает как сделать шаблон для КАТЕГОРИИ + ТОВАР ? чтобы при назначении шаблона списка, для всех вложенных товаров подхватывался этот шаблон.
это невозможно просто по причине того, что шаблон для категории и шаблон для товара не имеют друг к другу никакого отношения, это абсолютно разные шаблоны, и каждый отвечает за свое.

их 150 и они постоянно меняются
по моему что-то пошло не так :) 150 шаблонов? зачем?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

bantell

  • Захожу иногда
  • 93
  • 2 / 0
Re: Разные списки вывода товаров
« Ответ #3 : 28.12.2017, 16:37:05 »
это невозможно просто по причине того, что шаблон для категории и шаблон для товара не имеют друг к другу никакого отношения, это абсолютно разные шаблоны, и каждый отвечает за свое.
по моему что-то пошло не так :) 150 шаблонов? зачем?
;D ;D ;D да не 150 шаблонов, а шаблон для 150 товаров, которые находятся в категории с назначенным шаблоном. те нужно изменить И вывод категории (что удалось сделать) и вывод ВСЕХ товаров этой ПОДкатегории. Я о том, что присваивать 150 раз шаблон для каждого товара - как-то уж очень мучительно)
*

bantell

  • Захожу иногда
  • 93
  • 2 / 0
Re: Разные списки вывода товаров
« Ответ #4 : 28.12.2017, 16:41:01 »
Както уж очень странно, что ДШ не подхватывает шаблон от /components/com_jshopping/templates/new_shab/ - так было бы намного проще и логичней. Раз уж категория взала стиль оттуда, то и товар пусть тянет. НО... это ждумла и этим наверное все сказано)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Разные списки вывода товаров
« Ответ #5 : 28.12.2017, 16:50:15 »
да не 150 шаблонов, а шаблон для 150 товаров
ааа, 150 товаров :)

Както уж очень странно
та ничего не странно. разные шаблоны, чего они должны друг на друга влиять? мало ли кому как хочется какой шаб использовать. есть массовое редактирование товаров, выделили нужные, нажали Редактировать, задали всем сразу нужный шаблон. делов то.

НО... это ждумла и этим наверное все сказано
что именно этим сказано? :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Вывод 3-х первых картинок в списке товаров категории

Автор rudoy24

Ответов: 30
Просмотров: 11988
Последний ответ 19.07.2024, 11:41:28
от juleczka
Определить расширение. pop_description для списка товаров

Автор Alex_gs

Ответов: 3
Просмотров: 2014
Последний ответ 24.09.2023, 12:18:34
от kit2m2
[Решено] Увеличение выбора покупаемых товаров + -

Автор Aspik

Ответов: 216
Просмотров: 48454
Последний ответ 02.08.2023, 21:31:25
от kit2m2
Смена фото при наведении в списке товаров категории

Автор Taatshi

Ответов: 57
Просмотров: 6145
Последний ответ 15.06.2023, 15:53:25
от Akeksandr
Шаблон фильтрации товаров

Автор Prevergenec

Ответов: 1
Просмотров: 2344
Последний ответ 23.01.2023, 18:13:43
от kit2m2