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

frenzy

  • Захожу иногда
  • 63
  • 1 / 0
Обновил Joomla до 2.5.22 и у меня в навигации появился разделитель. Как его можно отключить или задать другую картинку?
На скорую я пошел в \modules\mod_breadcrumbs\tmpl\default.php и закомментил:
Код
echo ' '.$separator.' ';
, но может есть способ настройки из админки?
Вообще разделителя не было раньше и он добавлялся в виде бэкграунда к дивам с линками, я думал удалить их оттуда и заменить стандартную картинку, но оказалось, что она не центрируется по вертикале и вылазит верх.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Пропишите картинку в модуле тем же способом, в чем проблема? Переопределить файл только лучше в шаблоне, создав папку /templates/ваш шаблон/html/mod_breadcrumbs и закинув его туда. Далеко не все проблемы через админку решаются..
интернет-блог: http://websiteprog.ru
*

frenzy

  • Захожу иногда
  • 63
  • 1 / 0
1) Так путь к картинке где менять? В шаблоне есть переменная $separator, а где она задается я не знаю. Или что Вы имели ввиду под "переопределите файл"?
2) Как я сказал выше, её еще как-то придется через CSS выравнивать по вертикале.
*

kreker92

  • Захожу иногда
  • 390
  • 18 / 0
"переопределите файл"?
Замените. То же название, тот же путь, картинка другая
Все вопросы и предложения на почту.
*

frenzy

  • Захожу иногда
  • 63
  • 1 / 0
Цитировать
Замените. То же название, тот же путь, картинка другая
Заменить и переопределить - разные вещи. Как я писал выше при таком раскладе если он не будет той же высоты - будет съезжать, ибо нет там гибкого вертикального выравнивания
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Сам разделитель у вас выше же определён. Перепишите на что-то типа:

Код: php
$separator = '<span class="separator"> / </span>';

Потом в CSS напишите:

Код: css
.separator {display:none;}

Всё. И с точки зрения SEO у вас будут корректные хлебокрошки, и спрячете всё, что не нравится. А разделитель в виде <img />, как в некоторых шаблонах, это вообще маразм.

*

frenzy

  • Захожу иногда
  • 63
  • 1 / 0
Пустая трата ресурса как ни посмотри. С тем же успехом вместо $separator можно что угодно захардкодить, что я и сделал. А вот как сделать красиво: где separator реально определяется?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Пустая трата ресурса как ни посмотри. С тем же успехом вместо $separator можно что угодно захардкодить, что я и сделал. А вот как сделать красиво: где separator реально определяется?
Не понял. ^-^ О каких растрачиваемых ресурсах идёт речь? Слэш нужен для того, чтобы Гугль в сниппетах выдавал. Конечно нужна ещё и микроразметка. Но это ещё большая «трата времени». Хотя делал, ничего сложного. Далее, что в вашем понимание «красиво»? Иконку ромашки чтоли вывести надо? А определяется сепаратор там же, в шаблоне модуля. Чуть выше писали про отсутствие выравнивания. Гм, это проблема? Открываете любой подключенный css-файл и выравниваете как угодно.
*

frenzy

  • Захожу иногда
  • 63
  • 1 / 0
1) Вычислительный ресурс притакой байде.
2) Личные времязатраты на то, чтобы сделать то же самое, только сложнее.
Сепаратор определяется НЕ в шаблоне, а в самомо плаге:
Код
$separator = ModBreadCrumbsHelper::setSeparator($params->get('separator'));
*

kreker92

  • Захожу иногда
  • 390
  • 18 / 0
1) Что за вычислительный ресурс?)) вы там сепаратор в крошке меняете или сервер настраиваете?
2) если в плаге поменять, то при обновлении Joomla все это сотрется.
Все вопросы и предложения на почту.
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
1) Без комментов. Сразу в перлы форума. :)
2) Сепаратор определяется в параметрах модуля. О каком плагине вы говорите — загадка. А в шаблоне модуля он ПЕРЕопределяется.
Много не по теме понаписано, если честно. В топике описываем проблемы и их решения. Для домыслов на тему «а не будет ли лишней нагрузки на сервак от того, что я php-переменную переделаю» есть раздел «флуд».
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как настроить автоматический вывод первых 100 символов каждой статьи?

Автор MultiMatrix83

Ответов: 9
Просмотров: 1696
Последний ответ 07.08.2018, 17:45:53
от Bake
Как настроить календарь JEvents?

Автор Vasilisa11

Ответов: 0
Просмотров: 1177
Последний ответ 22.02.2018, 11:41:33
от Vasilisa11
Хлебные крошки

Автор oreh055

Ответов: 0
Просмотров: 1019
Последний ответ 24.12.2017, 13:58:36
от oreh055
Хлебные крошки и кеш

Автор AlienAntFarm

Ответов: 33
Просмотров: 10149
Последний ответ 05.11.2017, 20:01:29
от tomclancys
Как настроить редирект 301 ?

Автор Ирина Поехали

Ответов: 2
Просмотров: 1488
Последний ответ 25.09.2017, 19:04:01
от Ирина Поехали