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

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Глоссарий для K2
« : 02.09.2011, 14:25:30 »
Есть ли для К2 что-то подобное этому глоссарию?

НУЖНО:
1) вести В АДМИНКЕ базу терминологии по алфавиту
2) автоматом прикручивать ссылки на соответствующие словарные статьи плагином в материалах k2

ВСЁ!

UPD Что-то мне изнутри подсказывает, что как-то через тэги можно выкрутиться, но хотелось бы без хаков
« Последнее редактирование: 02.09.2011, 14:33:59 от Dorfman »
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: Глоссарий для K2
« Ответ #1 : 02.09.2011, 15:32:40 »
Я думаю, что лучше для этих средств использовать http://www.alphaplug.com/index.php/products/alphacontent.html
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: Глоссарий для K2
« Ответ #2 : 02.09.2011, 16:25:07 »
Что-то я недопонял или неправильно объяснил... Ещё раз:
мне нужно устроить (в админке) мини-словарь: это может быть либо компонент, либо как настройка плагина - по типу CoreDesign Glossary Plugin. К сожалению, вышеназванный плагин у меня не заработал в К2. Но весь его функционал меня бы устроил. Как, собственно, и другие компоненты-глоссарии , имеющие контент-плагины.
CoreDesign Glossary Plugin работает следующим образом (и меня даже устроило бы отсутствие компонента - у меня словарных статей будет всего с сотню, и то будут добавляться по мере наполнения контента):
В админке, в окне настроек плагина я указываю, к примеру: Joomla=Популярнейшая система управления содержанием сайта. И если в материале (но мне нужно не в материале от com_content, а именно в k2!) встречается слово Joomla, то чтобы выдавалось описание во всплывающем окошке при наведении на слово "Joomla". Ну, и конечно, чтоб слово как-то выделялось. В идеале, конечно, чтобы можно было по клику перейти в "словарь", но без этого я могу обойтись.
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: Глоссарий для K2
« Ответ #3 : 02.09.2011, 16:53:52 »
А почему CoreDesign Glossary Plugin не заработал?
Может, там надо в скрипте хакнуть, чтобы он БД к2 "подцеплял"?
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: Глоссарий для K2
« Ответ #4 : 02.09.2011, 17:51:09 »
А почему CoreDesign Glossary Plugin не заработал?
Может, там надо в скрипте хакнуть, чтобы он БД к2 "подцеплял"?
Не знаю почему, но я сейчас пытался заставить его работать в com_content - не же яйца, ссылка не появляется... Щяс буду пробовать на другом шаблоне.

PS скриптегратор установлен...
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: Глоссарий для K2
« Ответ #5 : 02.09.2011, 18:14:34 »
блин, понятно. Скриптегратор конфликтует с ARTIOFusionCharts. После включения скриптегратора перестают работать графики... НО ОНИ МНЕ ОБА НУЖНЫ! Чё делать?
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: Глоссарий для K2
« Ответ #6 : 02.09.2011, 23:00:58 »
А как-нибудь jquery no conflict сделать?
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: Глоссарий для K2
« Ответ #7 : 03.09.2011, 00:25:26 »
А как-нибудь jquery no conflict сделать?

как-нибудь - это КАК? У меня уже почти истерика....
staticlight, I NEED YOUR HELP!

Зафтра пойду и себе идиоту харакири сделаю!
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: Глоссарий для K2
« Ответ #8 : 03.09.2011, 11:38:49 »
Я не программист, но вот примеры:
http://api.jquery.com/jQuery.noConflict/
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: Глоссарий для K2
« Ответ #9 : 03.09.2011, 21:27:32 »
Спс, попробую разобраться. Сам я тоже не программер :(
*

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
Re: Глоссарий для K2
« Ответ #10 : 12.02.2013, 11:59:58 »
Я думаю, что лучше для этих средств использовать http://www.alphaplug.com/index.php/products/alphacontent.html
Вот новый глоссарий с поддержкой К2: http://www.joomunited.com/item/seo-glossary.html

Дописываю: купил себе его сегодня. Просто супер-компонент как для К2
« Последнее редактирование: 12.02.2013, 17:59:52 от x1 »
*

hsi

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Глоссарий для K2
« Ответ #11 : 24.02.2014, 14:23:12 »
Если еще актуально, я много чего перебрал, или нужно программировать или компонет  seo-glossary к сожалению.... 
Я вообще делал через  теги, надо каждому материалу подписать тег, потом подшаманить в коде, но оно всравно пока глчит,  но чувствую что идея правильная, как будет нормлаьно рабоичй вариант отпишую
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: Глоссарий для K2
« Ответ #12 : 24.04.2014, 14:01:35 »
seo links рулит!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться