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

artem_wrong

  • Захожу иногда
  • 78
  • 1 / 0
Joomla 3.9.28
vm 3.6.2
При загрузке товаров через RO CSVI в поле product_desc добавляю большое описание типа:

<p>Описние 1.</p>

<p><strong>Описание 2</p>

На сайте отображается примерно так:


<p>Описние 1.</p>Описание 2

Потом захожу в админку VM в сам товар, открываю его, пересохраняю и закрываю. На сайте все начинает отображаться корректно. С переносами, с жирным шрифтом и т.д. Все бы ничего, но товаров около 5000 и каждый открыть - сохранить - закрыть довольно проблематично.
Где Joomla фиксит код при выгрузке через CSVI и как это исправить?
Спасибо
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Где Joomla фиксит код при выгрузке через CSVI и как это исправить?
Это вопрос к разработчику расширения, который лучше знает что в коде- вызов метода Joomla или он применил htmlspecialchars.
Попробуйте для описания htmlspecialchars_decode в шаблоне
*

artem_wrong

  • Захожу иногда
  • 78
  • 1 / 0
Простите, что?) Можно подробнее, в какой папке, какой фал, что убрать/добавить, может через php my admin?
Я так понимаю, править надо плагин визуального редактора?
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Нужно переопределить макет в свой шаблон, или изменить , если уже переопределили .
Строка 207
Код
	<?php echo htmlspecialchars_decode($this->product->product_desc); ?>
Но моем скрине строка для проверки с вашего поста .
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Простите, что?)
Простите, если Вы не понимаете, "что", - Вам стоит привлечь понимающего исполнителя.
А если хотите сделать самостоятельно - нужно понять, что такое htmlspecialchars_decode в шаблоне.
 ;)
Возможно, будет интересно: Интеграция с Ozon
*

artem_wrong

  • Захожу иногда
  • 78
  • 1 / 0
Нужно переопределить макет в свой шаблон, или изменить , если уже переопределили .
Строка 207
Код
	<?php echo htmlspecialchars_decode($this->product->product_desc); ?>
Но моем скрине строка для проверки с вашего поста .

Код
<?php //Nav tabs ?>
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab"><?php echo vmText::_('COM_VIRTUEMART_TAB_DESC'); ?></a></li>
<?php if (!empty($this->product->customfieldsSorted['video'])) { ?>
<li><a href="#video" aria-controls="video" role="tab" data-toggle="tab"><?php echo vmText::_('COM_VIRTUEMART_TAB_VIDEO'); ?></a></li>
<?php } ?>
<li><a href="#reviews" aria-controls="reviews" role="tab" data-toggle="tab"><?php echo vmText::_('COM_VIRTUEMART_TAB_REVIEWS'); ?> (<?php echo $count; ?>)</a></li>
</ul>

<?php //Tab panes ?>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="home">
<?php echo $this->product->product_desc; ?>

Я правильно понял, что у меня в шаблоне показа товара это и отвечает за описание товара? Только оно на 237 строчке и, как я понял, заключено в таб -панель. попробую сейчас после этого всего вставить то, что Вы предложили
*

artem_wrong

  • Захожу иногда
  • 78
  • 1 / 0
Простите, если Вы не понимаете, "что", - Вам стоит привлечь понимающего исполнителя.
А если хотите сделать самостоятельно - нужно понять, что такое htmlspecialchars_decode в шаблоне.
 ;)
Очень часто пользуюсь услугами за деньги, потому как Joomla для меня - непаханное поле, но бывают моменты, когда истина кажется где-то рядом, осталось одну запятую где-то поставить, а оказывается в дело вступает какой-то htmlspecialchars_decode ))
*

ShopES

  • Захожу иногда
  • 426
  • 11 / 0
тупо разобрсться с макетом вывода
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
<?php echo $this->product->product_desc; ?>
заменить, а не вставить после .
Код
	<?php echo htmlspecialchars_decode($this->product->product_desc); ?>
*

artem_wrong

  • Захожу иногда
  • 78
  • 1 / 0
Нужно переопределить макет в свой шаблон, или изменить , если уже переопределили .
Строка 207
Код
	<?php echo htmlspecialchars_decode($this->product->product_desc); ?>
Но моем скрине строка для проверки с вашего поста .
Спасибо, это помогло!
Только при строчках 207 и 208 показывает сначала кривое описание, затем нормальное. Удалил 207 и оставил только Ваш вариант. Еще раз спасибо
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Только при строчках 207 и 208 показывает сначала кривое описание, затем нормальное. Удалил 207 и оставил только Ваш вариант.
Ну да, два раза не нужно описание выводить  $this->product->product_desc
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Расчёт стоимости товара в VirtueMart за периметр

Автор NIKOLY

Ответов: 0
Просмотров: 259
Последний ответ 04.07.2025, 09:18:31
от NIKOLY
Как вывести ID товара в описании товара?

Автор Stasweb

Ответов: 8
Просмотров: 4224
Последний ответ 28.11.2022, 23:22:27
от Evgen Kulibin
Joomla 3 + VM + Universal AJAX Live Search - как вывести картики товара в поиске?

Автор PSN

Ответов: 10
Просмотров: 9648
Последний ответ 27.03.2022, 17:29:00
от Evgen Kulibin
Как сделать - Вывод модуля на всех страницах - Кроме в карточке товара?

Автор artem_wrong

Ответов: 15
Просмотров: 3226
Последний ответ 15.02.2022, 15:07:34
от beliyadm
При сохранении товара слетает категория

Автор klara7

Ответов: 7
Просмотров: 2918
Последний ответ 23.12.2021, 08:45:40
от klara7