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

fib

  • Новичок
  • 4
  • 0 / 0
Исходные данные такие:

1. Я ничего почти не понимаю ни в Joomla ни в PHP пока.
2. Есть Интренет-магазин (достался в нагрузку ;)) на Виртуемарте и Joomla LE 2007 1.0.12

3. Сейчас тег TITLE формируется для страницы товара таким образом примерно
<title>Интернет-магазин "Труляля"  - Медведь плюшевый</title> (т.е. выходит что выводится только Название сайта - Название товара, без категории промежуточной. в принципе она и не нужна)

а мне нужно наоборот:
<title>Медведь плюшевый - Интернет-магазин "Труляля"</title> 4. При этом в файле shop.product_details.php есть такая строка:
/* Set Dynamic Page Title */
    $mainframe->setPageTitle( html_entity_decode( substr($product_name, 0, 60 ), ENT_QUOTES ));

думаю что она и влияет на это.
Вопрос как надо что изменить чтобы мне получить желаемое?
Заранее спасибо.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Как изменить TITLE в моем случае?
« Ответ #1 : 30.04.2008, 17:07:22 »
Попробуй по этой инструкции http://joomlaportal.ru/content/view/249/68/
По идее должно сработать и для магазина
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

fib

  • Новичок
  • 4
  • 0 / 0
Re: Как изменить TITLE в моем случае?
« Ответ #2 : 30.04.2008, 17:25:47 »
Спасибо огромное!!! Все получилось!!!

Единственная проблема возникла с Главной странице пока. Там стало так <title>Главная страница - Интернет-магазин "Труляля"</title>
А эта "Главная страница" в титле не нужна совсем...
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Как изменить TITLE в моем случае?
« Ответ #3 : 30.04.2008, 17:31:06 »
эта "главная страница" - название первого пункта в mainmenu - покопайся в поиске по форуму - было решение как и это убрать
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

fib

  • Новичок
  • 4
  • 0 / 0
Re: Как изменить TITLE в моем случае?
« Ответ #4 : 30.04.2008, 20:11:14 »
Спасибо еще раз!
Правда не удалось совсем убрать, пришлось переименовать в более приемлимое...
*

fib

  • Новичок
  • 4
  • 0 / 0
Re: Как изменить TITLE в моем случае?
« Ответ #5 : 07.05.2008, 16:18:51 »
Похоже рано я обрадовался тогда. :-) В попыхах на радостях и не заметил.
Проблмка такая возникла. Местами крохи поменялись, но проявился вот такой глюк:
<title>Медведь плюшевый - Интернет-магазин "Труляля"&nbsp;-&nbsp;Интернет-магазин "Труляля"</title>

т.е. почему-то название магазина второй раз вылезает в титле...
Посоветуйте как можно исправить?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с title товаров в VirtueMart

Автор saleon

Ответов: 5
Просмотров: 7870
Последний ответ 11.01.2012, 03:32:39
от timonov
Проблема со страницей "Изменить адрес" при оформлении заказа

Автор art-m1987

Ответов: 3
Просмотров: 2973
Последний ответ 29.12.2010, 23:24:52
от yrygvay
Как изменить сортировку по артикулу?

Автор Ole888

Ответов: 2
Просмотров: 3343
Последний ответ 25.11.2008, 17:29:09
от Bickaze
как изменить отображение модуля корзины?

Автор Privat

Ответов: 1
Просмотров: 2652
Последний ответ 21.11.2008, 14:46:07
от tsesl
Где изменить сопутствующие товары

Автор justalex

Ответов: 2
Просмотров: 3212
Последний ответ 18.11.2008, 13:47:10
от pitzoom