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

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Нули где нет цены
« : 16.05.2023, 09:30:26 »
Доброго времени суток форумчане! Подскажите пожалуйста, в чем может быть проблема. Товары где нет цены присваивали полю $this->product->prices['product_price']; нули сейчас просто пустое поле при создании товара.Вот старый товар - _https://lik-astana.kz/imidzhevaya-produktsiya/breloki/breloki-v-vide-gos-nomera-avtomobilya-detail.html и тут есть нули присвоенные автоматически в разметки offers
Код
<meta itemprop="price" content="<?php echo $this->product->prices['product_price'];?>">
Вот новый созданный товар - _https://lik-astana.kz/imidzhevaya-produktsiya/breloki/adresnik-dlya-zhivotnykh-detail.html и тут пустоПодскажите пожалуйста, в чем проблема.
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: Нули где нет цены
« Ответ #1 : 16.05.2023, 13:24:49 »
Проверил переменную prices так она вообще пустая
Код
print_r($this->product->prices); 
Код
Array 
(
[product_price] =>
[virtuemart_product_price_id] => 0
[product_currency] =>
[price_quantity_start] =>
[price_quantity_end] =>
[product_price_publish_up] =>
[product_price_publish_down] =>
[product_tax_id] => 0
[product_discount_id] =>
[product_override_price] =>
[override] =>
[categories] => Array
 (
 )
 [shoppergroups] => Array
 (
 )
[virtuemart_shoppergroup_id] =>
[costPrice] =>
[basePrice] => 0
[basePriceVariant] =>
[basePriceWithTax] =>
[discountedPriceWithoutTax] =>
[priceBeforeTax] =>
[taxAmount] =>
[salesPriceWithDiscount] =>
[salesPriceTemp] =>
[salesPrice] =>
[discountAmount] =>
[priceWithoutTax] =>
[variantModification] =>
[unitPrice] =>
)
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: Нули где нет цены
« Ответ #2 : 17.05.2023, 12:56:43 »
Так-же в панели VirtueMart пишет что проблемы с модулями allow_url_fopen и cURL хотя в phpinfo они есть (включены)
Цитировать
Your SERVER does not support allow_url_fopen, nor cURL! Registration process stopped. Please enable on your server either allow_url_fopen or cURL.
Версия VirtueMart 3.8.8 10472, подскажите кто-то сталкивался
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отображение цены

Автор EnotWhyNot

Ответов: 3
Просмотров: 731
Последний ответ 28.06.2021, 15:04:33
от ShopES
Цены товаров для разных групп

Автор Angelalya

Ответов: 0
Просмотров: 927
Последний ответ 03.06.2018, 19:20:25
от Angelalya
Не отображаются цены товаров Joomla 3.8

Автор PINE

Ответов: 0
Просмотров: 874
Последний ответ 28.09.2017, 16:51:26
от PINE
Добавление цены в карточку товара

Автор fev940

Ответов: 0
Просмотров: 847
Последний ответ 09.05.2017, 18:39:51
от fev940
Кнопка "Позвонить для запроса цены" - заменить/удалить

Автор agr

Ответов: 0
Просмотров: 1564
Последний ответ 10.02.2017, 12:43:12
от agr