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

Nazaretto

  • Давно я тут
  • 666
  • 4 / 4
На сайт http://teuphoria.com/ поставил флеш-плеер в позицию модуля newsflash. Эта позиция (newsflash) разработчиками шаблона изначально предназначена для флеш-новостей. Но я их убрал (сами модули этих новостей) и поставил туда плеер на флеше. Увидел такую ситуацию: плеер неактивен. Т.е. не кликабелен. Если я правильно понимаю, то происходит конфликт флеша, по скольку на любых других позициях плеер работает на ура. Вижу два варианта решения вопроса:
1) Преобразование позиции newsflash в обычную (по скольку на обычной позиции работает на УРА!)
2) Решения конфликта флеша

Прошу Вашей помощи! Напишите какие скрипты скинуть, и я скопирую сюда.  

Позиция в index.php
Код: php
		 <?php if($this->countModules('newsflash')) : ?> 
<div id="newsflashBG" class="<?php echo $style;?>">
<div class="blockfixWrap">
   <div id="newsflashInner" class="wrapper">
  <div id="newsflash">
<jdoc:include type="modules" name="newsflash" style="XHTML2" />
</div>
<!-- /newsflash -->  
       </div>
    <!--  /newsflashInner -->
    </div>
<?php if($this->countModules('newsflash')) : ?>
</div>
<?php endif;?>
<!-- /newsflashbg -->      
<?php endif; ?>  
« Последнее редактирование: 22.08.2012, 18:21:35 от Nazaretto »
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
Файл http://teuphoria.com/templates/jxtc_blogyou/css/style.css
строка 684
сделайте так:
#newsflashBG {
    position: relative;
  /* z-index: -1 !important;*/
}
Т.е. надо убрать z-index: -1 !important;

Плеер должен стать активным
*

Nazaretto

  • Давно я тут
  • 666
  • 4 / 4
Файл http://teuphoria.com/templates/jxtc_blogyou/css/style.css
строка 684
сделайте так:
#newsflashBG {
    position: relative;
  /* z-index: -1 !important;*/
}
Т.е. надо убрать z-index: -1 !important;

Плеер должен стать активным
Да, плеер заработал. Но практически весь сайт кроме верхней черной части (где меню) не работает. Такое впечатление, что плеер с сайтом поменялись "не активностью")
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
Шаблон чего-то тяжеловат - не получилось с ходу решить проблему.
Возвращайте назад z-index
Иначе ссылки не будут рабочие.
У блока <div id="newsflashBG"> высота задана 950px. Вот она и перекрывает все.
*

Nazaretto

  • Давно я тут
  • 666
  • 4 / 4
Шаблон чего-то тяжеловат - не получилось с ходу решить проблему.
Возвращайте назад z-index
Иначе ссылки не будут рабочие.
У блока <div id="newsflashBG"> высота задана 950px. Вот она и перекрывает все.

Нашел решение. Заменил строчку:
Код: css
height: 950px;

на:
Код: css
height: 150px;
margin-bottom: 800px;

Теперь все работает отлично. Спасибо за помощь, без Вас бы не понял в чем проблема)
Ставлю +
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

На сайте правая колонна ушла в низ

Автор vityavoluevich

Ответов: 3
Просмотров: 2230
Последний ответ 27.10.2023, 08:45:48
от vityavoluevich
Каков ваш заработок на сайте?возможно ли пролететь и создать не прибыльный сайт?

Автор bedalex

Ответов: 3
Просмотров: 4987
Последний ответ 05.06.2023, 11:00:40
от Ритулька88
Как поменять основные цвета модуля

Автор aisedora21

Ответов: 7
Просмотров: 4348
Последний ответ 24.06.2021, 20:23:06
от Moysha
Кто логинился на сайте

Автор sosny

Ответов: 6
Просмотров: 1611
Последний ответ 24.11.2017, 10:04:41
от sosny
Как убрать ссылку на allforjoomla.ru из модуля SimpleForm2?

Автор Loh

Ответов: 3
Просмотров: 3051
Последний ответ 20.06.2017, 11:17:28
от ZyX