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

southerner47

  • Новичок
  • 2
  • 0 / 0
Уважаемые коллеги, подскажите, пожалуйста, вот с таким моментом:

В Joomla установил JoomShopping. На одной из страниц разместил строку поиска JoomShopping (JShopping Search), но сама кнопка "Поиск" разместилась не по соседству, справа от строки поиска, а внизу (см. скриншот1).

При помощи Chrome DevTools посмотрел какие классы стилей свойственны строке поиска и самой кнопке: class="inputbox input-small" и class="button btn btn-primary" для строки поиска и соответственно (см. скриншоты 2 и 3).

Но ни в templates\shaper_helixultimate\css\template.css, ни в \components\com_jshopping\css\default.css я этих классов найти не смог.
Можете, пожалуйста, подсказать как мне немного уменьшить размер строки поиска (чтобы не на всю ширину экрана) и за счет этого "поднять" кнопку, разместив её справа от строки поиска.

Заранее большое спасибо!

Скриншот 1: https://disk.yandex.ru/i/paqgnmhTWWD08w
Скриншот 2: https://disk.yandex.ru/i/EadD0Td12ahWKg
Скриншот 3: https://disk.yandex.ru/i/SuGMJ88FqYBCOQ
*

Alex_gs

  • Захожу иногда
  • 154
  • 2 / 0
Ну не знаю, поможет ли...
Вот как пример кусок стилизации с моего сайта. vkf-search-mod - CSS-класс модуля который указал в модуле.
Базовый шаблон Helix Ultimate. Код в custom.css .

.vkf-search-mod .mod-shop-search {width: 90%;}
.vkf-search-mod .mod-shop-search .button {
  float: right;
  font-size: 16px;
  position: relative;
  top: -38px;
  border: 1px solid #b89254;
  border-radius: 0 4px 4px 0!important;
  background: #b89254!important;
  color: #340e06;
  text-transform: uppercase;
}
.vkf-search-mod .mod-shop-search .button:hover {color: #001909; background: #4D9966!important; border: 1px solid #4D9966 ;}
.vkf-search-mod .mod-shop-search  input.inputbox {
  border: 1px solid #b89254!important;
  background: #fcdaab;
  color: #340e06!important;
  font-weight: 500;
}
.vkf-search-mod .mod-shop-search .adv_search_link a {color: #fcdaab;}
.vkf-search-mod .mod-shop-search .adv_search_link a:hover {color: #4D9966;}


Посмотреть можно тут - https://volkoff.com.ua/

Ну и чтобы убрать "старт", я сделал переопределение модуля и заменил строку 12 в
/templates/shaper_helixultimate/html/mod_jshopping_search/default.php

с
<input class = "button btn btn-primary" type = "submit" value = "<?php print \JText::_('JSHOP_GO')?>" />
на
<button  class = "button btn btn-primary" type = "submit"> <i class="fa fa-search" aria-hidden="true"></i> </button>
Заменив на вывод кнопки с лупой.
« Последнее редактирование: 08.12.2023, 09:33:32 от Alex_gs »
*

Alex_gs

  • Захожу иногда
  • 154
  • 2 / 0
*

southerner47

  • Новичок
  • 2
  • 0 / 0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль "Умного поиска"

Автор n_nickon

Ответов: 6
Просмотров: 1317
Последний ответ 26.05.2025, 18:10:51
от n_nickon
Не работает кнопка "Сохронить" в компоненте RSSeo

Автор azm1n

Ответов: 1
Просмотров: 754
Последний ответ 15.05.2025, 07:12:26
от wishlight
Убрать закрывающий слеш в rel=&quot;lazy-stylesheet&quot;/&gt; в коде?

Автор zemelshik

Ответов: 2
Просмотров: 1032
Последний ответ 14.04.2025, 17:02:49
от azm1n
При отключении ссылки Подробнее в анонсе, показ кнопки раздваивается?

Автор Sprav

Ответов: 2
Просмотров: 745
Последний ответ 03.04.2025, 20:26:04
от Sprav
Перенос кнопки панели доступности

Автор revlin91

Ответов: 4
Просмотров: 2550
Последний ответ 05.11.2024, 23:26:39
от poopkin