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

mogul82

  • Осваиваюсь на форуме
  • 16
  • 0 / 2
Не могу понять как картинку сделать на ссылке? Подскажите плз.

Хотел так:
.mainlevel {background:url(pro/2/j/templates/18/img/3.gif); font-family:verdana; color:ffffff; font-weight:bold; font-size:16px;}

А он гад создает дополнительную таблицу ваще без класса.
*

BaR

  • Захожу иногда
  • 86
  • 6 / 0
Re: Как картинку прикрепить к ссылке
« Ответ #1 : 01.06.2009, 13:26:29 »
Не ясен вопрос, но попробуйте прописать для a.mainlevel {...}, или если хотите  разные картинки при наведении курсора, активном меню то используйте  a.mainlevel:link {...}, a.mainlevel:visited {...}, a.mainlevel:hover {...}, ну и правильно стили сформировать...
*

mogul82

  • Осваиваюсь на форуме
  • 16
  • 0 / 2
Re: Как картинку прикрепить к ссылке
« Ответ #2 : 01.06.2009, 15:20:09 »
Не мне надо background задать.
*

BaR

  • Захожу иногда
  • 86
  • 6 / 0
Re: Как картинку прикрепить к ссылке
« Ответ #3 : 01.06.2009, 15:44:16 »
так и задавайте, тогда просто для a.mainlevel {...}, если задать отображение элемента блоком , фон задать бекгроундом картинкой и все, все зависит от вывода меню например: если модуль отображается как таблица, тогда этот способ отображения очень подходит, хотя вариантов может быть хоть сколько, здесь нет такого что нужно идти одним способом:
модуль опубликован слева как таблица часть кода будет примерно такой(при просмотре в браузере)
Код
<tr align="left">
<td>
<a class="mainlevel" href="http://www......">первое меню</a>
</td>
</tr>
<tr align="left">
<td>
<a class="mainlevel" href="http://www......">второе меню</a>
</td>
</tr>
.....
Для него css
Код
	width: 150px;/по ширине своей картинки, можно и высоту добавить*/
background-image: url(....);
        background-repeat: no-repeat;
display: inline-table;/*для моззилы, оперы и осла 7*/
//display: block;  /*для ИЕ6*/
« Последнее редактирование: 01.06.2009, 15:52:37 от BaR »
*

mogul82

  • Осваиваюсь на форуме
  • 16
  • 0 / 2
Re: Как картинку прикрепить к ссылке
« Ответ #4 : 01.06.2009, 16:12:12 »
Зделал так:
a.mainlevelqwe_1 {background-image:url(/templates/18/img/1.gif); display: inline-table; width: 150px; font-family:verdana; font-weight:bold; font-size:16px; width: 100px}

Не прет.
*

mogul82

  • Осваиваюсь на форуме
  • 16
  • 0 / 2
Re: Как картинку прикрепить к ссылке
« Ответ #5 : 01.06.2009, 16:12:42 »
Т.е. шриф ставиться а фоновая картинка нет.
*

mogul82

  • Осваиваюсь на форуме
  • 16
  • 0 / 2
Re: Как картинку прикрепить к ссылке
« Ответ #6 : 01.06.2009, 16:16:02 »
Во теперь так заработало, но height и width не работает
background-image:url(http://pro/2/j/templates/18/img/3.gif);
*

mogul82

  • Осваиваюсь на форуме
  • 16
  • 0 / 2
Re: Как картинку прикрепить к ссылке
« Ответ #7 : 01.06.2009, 16:17:03 »
Все спасибо теперь работает как надо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

В ссылке с index2.php отображается шаблон и модули, что за глюк?!

Автор hels

Ответов: 6
Просмотров: 2154
Последний ответ 05.07.2014, 22:03:16
от hels
Поставить картинку как фон материала

Автор VisedFAQ

Ответов: 10
Просмотров: 5669
Последний ответ 01.04.2014, 16:55:22
от ShfVD
Быстрая смена шаблона по ссылке

Автор NC-JaFaR

Ответов: 8
Просмотров: 7462
Последний ответ 24.01.2014, 17:03:44
от Azizkz
Шаблон классный! Но надо поменять картинку - но ее не найти

Автор Silverstreet

Ответов: 1
Просмотров: 1702
Последний ответ 18.10.2011, 18:14:15
от Robinson
Прикрепить footer к низу, и не только...

Автор Frostmourn

Ответов: 20
Просмотров: 5227
Последний ответ 30.06.2011, 19:44:10
от Frostmourn