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

back

  • Захожу иногда
  • 214
  • 7 / 0
  • Все просто если по очереди)
Привет.
Нужно создать выпадающие меню.
Для этого я всегда использовал swMenuFree , но теперь нужно подложить картинку как фон к пункту меню.
Её пример вы можете увидеть в файле прикреплённом к теме.
Это градиент от черного к темно-зелёному.
лучше всего это сделать, если уменьшить ширину картинки до 1 пикселя и   
background-image: url(../images/menuback.jpg);
background-repeat: repeat-x;

Но проблема в том, что интерфейс меню компонента позволяет подложить только цвет, не картинку.


Вопрос: Как сделать выпадающие меню, под пунктами которого лежат картинки как фон?

Может знаете какое другое меню, где это можно сделать или может знаете как хакнуть swMenuFree?

Огромное спасибо заранее, за то что прочитали и задумались над вопросом.

[вложение удалено Администратором]
*

back

  • Захожу иногда
  • 214
  • 7 / 0
  • Все просто если по очереди)
Нашел ответ в более новой версии swMenuFree5,1
На вкладке "Colors & Backgrounds" есть опция Background Images, которая и позволяет поставить картинку.
Даная опция дает возможность выбрать картинку как Background-image и даже её размножает, то есть background-repeat: repeat-x;
Это решило все мои проблемы с меню. Не даром ночь просидел как видите по времени написания темы.

На момент написание этого ответа 18 раз была просмотрена эта тема - все спасибо за внимание.
Модераторы сами решат что с этой темой делать - оставить как познавательный монолог или удалить.
Но если желание помочь не пропало -  мне тут
Спасибо ещё раз
*

Irchik

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Нашел ответ в более новой версии swMenuFree5,1
На вкладке "Colors & Backgrounds" есть опция Background Images, которая и позволяет поставить картинку.
Даная опция дает возможность выбрать картинку как Background-image и даже её размножает, то есть background-repeat: repeat-x;
Это решило все мои проблемы с меню. Не даром ночь просидел как видите по времени написания темы.


Простите, можно вопрос? :) У меня была та же проблема, я воспользовалась версией 4,5 этого модуля. Вставила картинку под меню. Но все пункты меню получаются слитные... как это можно изменить? Где прописать отступ между пунктами? Порылась в этом модуле - не могу найти.
Может вы знаете?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает пункт меню в админке Новый материал

Автор NICTO

Ответов: 8
Просмотров: 4844
Последний ответ 01.05.2022, 19:01:23
от Maksdal
Меню сайта. Выделение активной страницы в меню.

Автор Dies

Ответов: 9
Просмотров: 10123
Последний ответ 27.01.2016, 12:29:26
от Daser
Не могу отредактировать пункты меню

Автор Kr1og5n

Ответов: 0
Просмотров: 2825
Последний ответ 20.12.2013, 11:21:35
от Kr1og5n
как убрать/скрыть меню с главной страницы

Автор seetro

Ответов: 2
Просмотров: 2691
Последний ответ 24.03.2011, 16:29:27
от alex2011
Как сделать выезжающее справа из меню в картинках субменю?

Автор mayra

Ответов: 3
Просмотров: 4459
Последний ответ 18.07.2010, 22:18:50
от dinox