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

qvagin

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
 !

Здравствуйте!
Сколько не просматривал форумы по Joomle так и не нашёл ответа по горизонтальной прокрутке.
Из-за отсутствия горизонтальной прокрутки в браузерах сайт при уменьшении окна сильно деформируется и модули смещаются кто куда. Как сделать что б она появлялась при уменьшении окна?
Установлена Joomla  1.7.3, шаблон создан с помощью Artisteer 4.
В template.css по удалял все overflow:hidden; непомогло.

template.css
Спойлер
[свернуть]
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
У Вас наверное шаблон резиновый, т.е. width: 100%;
Поэтому и не появляется горизонтальная прокрутка.
Сделайте шаблон фиксированного размера в пикселах, например, width: 1200px;
*

qvagin

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
У меня сайт не резиновый
body
{
  padding: 0;
  margin: 0;
  min-width: 1000px;
  color: #E2E8EE;
  }
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
Давайте ссылку на сайт.
Если же сайт локальный, то ставьте FireBug и сами разбирайтесь
*

midav

  • Давно я тут
  • 926
  • 115 / 1
При уменьшении размера подключается класс .responsive body , для него указано свойство min-width: 240px;
Ответы на вопросы по CSS . Откройте для себя Firebug
*

qvagin

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
А какое свойство у него должно быть?
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Ну это как бы ваше дело какие свойства этому классу прописывать . Я просто показал почему прокрутка не появляется .
Ответы на вопросы по CSS . Откройте для себя Firebug
*

qvagin

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Вся проблема у меня по ходу заключается в template.responsive.css. Удаляю его сайт не деформируется, но нет прокрутки. Меняю .responsive body 240px;, прокрутка бывает появляется, но сайт при любых параметрах деформируется.
*

qvagin

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Решил проблему удалением всего из файла template.responsive.css кроме .responsive body {min-width: 1000px;} - перестал деформироваться сайт.
*

midav

  • Давно я тут
  • 926
  • 115 / 1
То что сайт "деформировался" это не неправильно . Так и было предусмотрено . При уменьшении разрешения браузера модули уходили под низ, а контент оставался сверху .
Ответы на вопросы по CSS . Откройте для себя Firebug
*

qvagin

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Это предусмотрение никак не устраивало...
*

jusper

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
автор спасибо, это в тему того, чтобы заканчивать посты решением, так как это может помочь кому-то однажды)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать?

Автор Twins

Ответов: 3
Просмотров: 1855
Последний ответ 01.07.2021, 13:11:51
от xpank
Как сделать кнопку формы аккаунта?

Автор Evgen Kulibin

Ответов: 0
Просмотров: 1019
Последний ответ 22.04.2021, 22:15:06
от Evgen Kulibin
Как сделать плавающий модуль?

Автор THeCMeX

Ответов: 2
Просмотров: 1177
Последний ответ 08.03.2021, 22:21:01
от Flexderection
[Решено] Как сделать чтобы фотография открылась в отдельном окне?

Автор a-two

Ответов: 11
Просмотров: 2115
Последний ответ 03.11.2020, 16:57:40
от Nikolay89
Изменение размера модального окна

Автор nesskafe

Ответов: 4
Просмотров: 2583
Последний ответ 16.06.2020, 17:43:05
от xpank