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

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
В Chrome, Opera, даже в IE (как ни странно) все норм, а вот в лисе вот так:

т.е. картинка с телефоном неправильно отображается (должны быть равные отступы от границ div блока, а видно, что сверху и слева все нормально, а снизу отступ почему-то больше, чем сверху)
В Chrome, Opera и IE все норм. (видно что у картинки везде равные отступы):

В template.css шаблона такой код:
Код: css
/*Top Menu2*/
#top-menu2{background-color:#FFED8E;border:1px solid #b5b5b5;float:right;margin:10px 300px 0 0}
#top-menu2 ul{list-style-type:none;padding:0;margin:0}
#top-menu2 li{float:left;background:none;padding:0;}
#top-menu2 a{font-size:11px;font-weight:bold;text-decoration:none;color:#666;margin:0;padding:0 8px}
#top-menu2 a:hover{color:#888;text-decoration:none}

Но я создал свой div в JCE редакторе посредством модуля "Произвольный HTML код" и вывел этот модуль в позицию top-menu2, CSS которого выше я написал.
Такой код в jce:
Код: css
<div style="font-size: 14px; font-style: normal; line-height: normal; width: 150px; padding: 5px; border-color: #000000;">
<img style="float: left;" alt="phone" src="images/images_for_store/icons/phone.png" height="32" width="32" />
&nbsp; <span style="color: #000000;">8-920-421-98-44</span><br />
<span style="color: #000000;">&nbsp; 8-920-421-93-90</span></div>

т.е. padding: 5px я задал и по идее отступы должны быть равные, но вот только в Firefox'e почему-то отображается не совсем так.
Сайт где можно посмотреть фаербагом http://tvoya-t-igra.ru
Версия лисы последняя, не могу понять почему так...

Помогите пожалуйста.
*

Рэм

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
browser reset используете?
*

Pazys

  • Завсегдатай
  • 1738
  • 241 / 4
  • <a>А где я ошибся-то?</b>
line-height: 16px; - для span с номерами телефонов
Ишак меня нюхал ...
Если помог - плюсуйте в карму.
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
browser reset используете?
Вы про кнопку в Фаерфоксе Справка>Информация для решения проблем>Сбросить Firefox? Нет, не использую, не нажимал.

line-height: 16px; - для span с номерами телефонов
т.е. вместо line-height: normal; вот здесь:
Такой код в jce:
Код: css
<div style="font-size: 14px; font-style: normal; line-height: normal; width: 150px; padding: 5px; border-color: #000000;">
<img style="float: left;" alt="phone" src="images/images_for_store/icons/phone.png" height="32" width="32" />
&nbsp; <span style="color: #000000;">8-920-421-98-44</span><br />
<span style="color: #000000;">&nbsp; 8-920-421-93-90</span></div>
заменить на line-height: 16px; ?
Я заменил-все отлично! Теперь во всех браузерах все норм отображается. Но правильно ли я заменил (в том месте)?
*

Pazys

  • Завсегдатай
  • 1738
  • 241 / 4
  • <a>А где я ошибся-то?</b>
<span style="color: #000000; line-height: 16px;">8-920-421-98-44</span><br />
<span style="color: #000000; line-height: 16px;">&nbsp; 8-920-421-93-90</span>
Подчеркнул правильное
Жирным выделил непонятный непереносимый и обычный пробел
Ишак меня нюхал ...
Если помог - плюсуйте в карму.
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
<span style="color: #000000; line-height: 16px;">8-920-421-98-44</span><br />
<span style="color: #000000; line-height: 16px;">&nbsp; 8-920-421-93-90</span>
Подчеркнул правильное
Жирным выделил непонятный непереносимый и обычный пробел
Ясно, спасибо, исправил. Насчет пробела-сам хотел сделать вместо &nbsp; обычный пробел, JCE редактор урезал, залез в его настройки и нашел опцию "Param Keep Nbsp", выставил ее на "Нет" и терь все норм. В итоге причесал код, так получилось:
Код: css
<div style="font-size: 14px; padding: 5px;">
<img style="float: left;" alt="phone" src="images/images_for_store/icons/phone.png" height="32" width="32" />
<span style="line-height: 16px;">  8-920-421-98-44</span><br />
<span style="line-height: 16px;">  8-920-421-93-90</span></div>
Pazys, спасибо большое! +
« Последнее редактирование: 08.10.2013, 13:41:36 от THE KILLERS »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как убрать боковые отступы в мобильной версии шаблона?

Автор Евгений1980

Ответов: 2
Просмотров: 1612
Последний ответ 18.01.2021, 18:24:53
от arma
Как убрать отступы между меню и каруселью?

Автор Vanya

Ответов: 0
Просмотров: 1309
Последний ответ 22.07.2019, 17:13:10
от Vanya
Убрать отступы на главной странице в шаблоне Helix 3

Автор shrek_01

Ответов: 2
Просмотров: 2360
Последний ответ 13.01.2017, 11:48:53
от Ragivort
Валидатор отображает - "Sorry! This document cannot be checked", как исправить?

Автор stimyl

Ответов: 0
Просмотров: 2186
Последний ответ 01.07.2016, 15:41:19
от stimyl
Неправильно отображается шаблон на мобильных устройствах

Автор hyperion

Ответов: 1
Просмотров: 1402
Последний ответ 14.01.2016, 18:33:15
от arma