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

ArtBliss

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Здравствуйте, такая проблема, при включенном компоненте sh404SEF v3.6.4.1481, теги сделанные в компоненте K2 v.2.6.1 при нажатии не выводятся, а перенаправляются на главную страницу, как исправить данный глюк.
*

st_d

  • Новичок
  • 2
  • 0 / 0
та же беда.. помогите, кто в курсе
*

st_d

  • Новичок
  • 2
  • 0 / 0
Здравствуйте, такая проблема, при включенном компоненте sh404SEF v3.6.4.1481, теги сделанные в компоненте K2 v.2.6.1 при нажатии не выводятся, а перенаправляются на главную страницу, как исправить данный глюк.

как-то решили этот вопрос?
*

Silence

  • Захожу иногда
  • 60
  • 1 / 0
Молчание форумчан как бы намекает, что все ответы уже есть на форуме, однако, пока их не видно.. Как не обидно.
Столкнулся сегодня в очередной раз с этой проблемой, система глючит в некоторых сочетаниях настроек sh404SEF. К примеру, если адрес с тегом совпадает с адресом какой-либо категории или материала, то за нас решает рандом (хотя, благодаря экспериментам понял, что важен порядок загрузки страниц после "Прочистки" url'ов, в моем случае нельзя было загружать странички с тегами раньше, категорий).

Но бывают и "необъяснимые" ситуации. До сих пор не могу понять, почему тег savageworld.ru/tag/lisitsa.html выдает теги, тег savageworld.ru/tag/novyy-svet.html не выдает (ссылки написал так, чтобы не посчитали за спам).
Какие условия не выполняются? Может можно как-то отключить формирование "красивых ссылок" для тегов. Оставив для всего остального?

Да, когда sh404SEF не был включен, все отображалось, конечно же, нормально.

sh404SEF куплен, но месяц назад истекла подписка.


Быть может на вопрос: "Можно ли как-то указать sh404SEF или K2 на какой страничке формировать выдачу тегов?", будет проще ответить..
« Последнее редактирование: 05.01.2015, 02:08:19 от Silence »
*

Silence

  • Захожу иногда
  • 60
  • 1 / 0
Маленькое дополнение.
Если разместить на главной <jdoc:include type="component" />, то теги, которые до этого не отображались, будут видны. Оно и понятно, ведь вывод контента им нужен для этого. Тут другой вопрос: почему некоторые теги привязаны к главной страничке, а некоторые не зависят от нее?

Искренне извиняюсь, что вновь дополняю свои же слова. Проблему решил тем же способом, что и раньше.
1. Открыл карту сайта (сформированную при помощи Xmap)
2. Зашел в sh404SEF и нажал "Прочистить" url'лы.
3. Сразу же обновил страничку с картой сайта (чтобы подхватились все адреса на сайте).

После этого, теги не пытаются "открыться на главной". А просто отображаются как и должны. С чем это связано я так и не понял, но как временное решение сойдет.
« Последнее редактирование: 06.01.2015, 01:10:05 от Silence »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

sh404SEF + OSMap Free

Автор xlenivecx

Ответов: 5
Просмотров: 3459
Последний ответ 14.12.2019, 22:34:33
от draff
Теги на страницах навигации sh404SEF

Автор alexey711

Ответов: 2
Просмотров: 3236
Последний ответ 25.06.2019, 15:02:55
от alexey711
Как выключить отображение кода модуля на странице 404 работающей через sh404SEF?

Автор Dim

Ответов: 1
Просмотров: 3550
Последний ответ 05.11.2018, 22:56:47
от Dim
Убрать слэши sh404SEF

Автор romagromov

Ответов: 1
Просмотров: 3770
Последний ответ 16.06.2018, 12:03:05
от romagromov
Управление 404 ссылками в sh404SEF

Автор Afman

Ответов: 0
Просмотров: 3704
Последний ответ 09.06.2018, 20:15:30
от Afman