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

Mishani

  • Захожу иногда
  • 74
  • 1 / 0
Может кто делал?
Не могу найти куда прописать <span></span> для "руб." чтоб изменить цвет и шрифт.
Подскажите где копать.
*

sadamss

  • Осваиваюсь на форуме
  • 44
  • 1 / 0
Должно быть в style.css и там background: #;
Вообще нажми правой кнопкой на цвет и посмотри "код элемента", там справа увидишь путь к цвету, потом через FTP идешь и меняешь, вроде так. Шрифты таким же макаром ищешь.

Если только "руб" поменять свет, тогда не знаю, но точно это библиотеки CSS.
« Последнее редактирование: 15.05.2013, 15:22:12 от sadamss »
*

Mishani

  • Захожу иногда
  • 74
  • 1 / 0
Нужно только "руб."
сейчас стоимость отображается так
div class="jshop_price">
<span>1462 руб.</span>
</div>

а нужно например так:
div class="jshop_price">
<span id="cena">1462</span> <span id="valuta">руб.</span>
</div>

только вот в каком файле прописывать не найду,
знаю только что выводит цену этот код
<?php if ($product->_display_price){?>
            <div class = "jshop_price">
               <span><?php print formatprice($product->product_price);?></span>
            </div>
        <?php }?>

от куда цепляет данные этот кусок я непойму
<?php print formatprice($product->product_price);?>
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
/components/com_jshopping/lib/functions.php
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
функция прайсформат вроде..
кароче искать price :)
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Mishani

  • Захожу иногда
  • 74
  • 1 / 0
спасибо всем за подсказку
пошел я за пивом, тут капаться походу на весь вечер
 :o
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
вот кусок из 2.9.7

Спойлер
[свернуть]

походу тут на неделю увязнет товарищ)))))
Upd. "Symb" - вот это вытаскивать в span? иду за попкорном)))
« Последнее редактирование: 15.05.2013, 16:49:29 от ELLE »
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Mishani

  • Захожу иногда
  • 74
  • 1 / 0
Да, этот
Поможете вытащить в span&
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Код
... str_replace("Symb", "<span>".$currency_code."</span>" ...
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Mishani

  • Захожу иногда
  • 74
  • 1 / 0
Огромное всем спасибо!  :laugh: *DRINK*

Все получилось, сделал так:

$return = str_replace("Symb", "<span id='valuta'>".$currency_code."</span>", str_replace("00","<span id='cena'>".$price."</span>", $jshopConfig->format_currency[$jshopConfig->currency_format]));
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
а нафига
Код
span id
?
класс присвойте
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Mishani

  • Захожу иногда
  • 74
  • 1 / 0
сам щас смотрю и нафига id лучше class
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
зачем реплейс-то?
в листинге допустим
  
Код: php
  
<?php
 echo number_format($product->product_price, $this->config->decimal_count, $this->config->decimal_symbol, $this->config->thousand_separator);
?>

<span>
<?php
 echo $this->config->currency_code
?>
</span>
*

evpadallas

  • Захожу иногда
  • 171
  • 42 / 1
Функцию formatprice() править не рекомендуется ибо тогда <span id='valuta'> будет впечатываться как HTML тег в PDF, генерируемый магазином.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Изменить стили подкатегорий

Автор mag_num83

Ответов: 14
Просмотров: 1981
Последний ответ 07.03.2024, 13:20:59
от mag_num83
Изменить название

Автор ureel

Ответов: 1
Просмотров: 2456
Последний ответ 02.12.2021, 21:33:07
от sivers
Как в шаблоне товара изменить расположение картинок?

Автор itbc

Ответов: 14
Просмотров: 1488
Последний ответ 05.11.2019, 10:09:27
от itbc
Вывести данные базовой цены

Автор intcorp

Ответов: 3
Просмотров: 943
Последний ответ 22.11.2018, 17:58:53
от lexxbry
Оформление базовой цены

Автор intcorp

Ответов: 6
Просмотров: 882
Последний ответ 19.11.2018, 19:08:06
от dmitry_stas