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

kunsaid

  • Захожу иногда
  • 166
  • 1 / 1
Доброго времени!
На главной странице слайдер выводит вступительные изображения материалов чтоб можно было нажать и посмотреть о чем материал. Изображения он выводит слишком большие. Даже маленький баннер прилепил туда, он его увеличивает по всему размеру блока. Подскажите пожалуйста, как можно уменьшить размер выводимого изображения? Для справки название слайдера ST News Slider. Сайт http://mfcpuschino.ru/
Код
.latest-news-full {
    position: relative;
    height: 500px;
    background-size: cover !important;
    margin: 0;
    display: block;
    overflow: hidden;
Что здесь надо изменить или добавить?
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Re: Слайдер на главной странице
« Ответ #1 : 06.12.2020, 11:49:28 »
Ну так у вас высота 500
*

kunsaid

  • Захожу иногда
  • 166
  • 1 / 1
Re: Слайдер на главной странице
« Ответ #2 : 06.12.2020, 11:56:54 »
height: 500px не используется, он зачеркнут
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Слайдер на главной странице
« Ответ #3 : 06.12.2020, 12:04:18 »
height: 500px не используется, он зачеркнут
Код
height: 500px !important;
п.с.
Цитировать
Дополнительно в настройках модуля вы можете отрегулировать высоту слайдера, отключить пагинацию и стрелки, установить желаемые отступы модуля сверху и снизу.
А вы смотрели параметры модуля ?
« Последнее редактирование: 06.12.2020, 12:41:24 от draff »
*

kunsaid

  • Захожу иногда
  • 166
  • 1 / 1
Re: Слайдер на главной странице
« Ответ #4 : 06.12.2020, 12:59:18 »
Код
height: 500px !important;
п.с.А вы смотрели параметры модуля ?
в параметрах модуля я все пересмотрел, там нет именно изменения размера выводимой картинки. А стрелки кружочки меня пока не особо интересуют. По вашей наводки, я немного изменил. Уменьшил картинку убрав вот здесь
Код
background-size: cover !important;
!important;, теперь картинки по своим размерам, именно так и требовалось. Теперь в картинках стоит задний фон
Код
background: #555 url(http://mfcpuschino.ru/images/slide/x3.jpg.pagespeed.ic.cHM5HbFzRy.webp) center no-repeat;
height: 400px;
, и F12 мне не показывает в каком файле делать изменения, пишет inline. Подскажите пожалуйста, где этот параметр может находиться?
*

Akeksandr

  • Захожу иногда
  • 396
  • 12 / 0
Re: Слайдер на главной странице
« Ответ #5 : 07.12.2020, 17:44:23 »
и F12 мне не показывает в каком файле делать изменения, пишет inline. Подскажите пожалуйста, где этот параметр может находиться?
В настройках модуля.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как спрятать блок (его код) на странице

Автор darkghost

Ответов: 4
Просмотров: 2539
Последний ответ 28.04.2023, 11:23:43
от fsv
Съезжают модули на странице материала

Автор sibdes

Ответов: 3
Просмотров: 2860
Последний ответ 24.04.2023, 12:50:21
от beliyadm
Отображение модуля меню на странице материала

Автор kunsaid

Ответов: 9
Просмотров: 1194
Последний ответ 21.07.2021, 10:50:29
от kunsaid
Привязанные к главной странице модули отображаются на страницах 3-го уровня

Автор Roman_S

Ответов: 3
Просмотров: 886
Последний ответ 08.06.2021, 15:10:53
от Roman_S
После восстановления съехал каталог товаров и баннеры на главной не отображаются

Автор ask-armada

Ответов: 0
Просмотров: 634
Последний ответ 23.03.2021, 13:52:15
от ask-armada