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

filfil2

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
Да ссылки внешние, которые в контенте идут с редиректом, а втегах без редиректа
Да вот в том-то и дело, что редирект работает только со статьями. Ну, я такое решение нашёл (правда длинное и неказистое) - с помощью плагинов ArticlesAnywhere (вставка статей в модули) и ModulesAnywhere (вставка модулей в статьи):
1. Создал статью (запихал её в специально созданные категорию и раздел, чтобы никому не было видно).
2. В статью вставил тег ModulesAnywhere - например, {module JoomlaTags}
3. Создал новый модуль (Произвольный HTML-код). В модуль вставил тег ArticlesAnywhere - например, {article Нужная статья}{text}{/article}.
4. Вывел этот модуль вместо проблемного. Всё сработало  ^-^
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
Идея прикольная, если мало материала, а если за 200 статей, тогда завал, долгая история. Но всё равно спасибо!
« Последнее редактирование: 13.10.2010, 09:54:40 от dedalik »
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
Попал я с этим плагином, сейчас все статьи нужно переделывать и убирать ссылки, так как во всех тегах сайта ссылки открытые! А использовать сайт без тегов это глупо, так как многие поисковики по ключевым ищут лудше теги чем контент.
*

filfil2

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
Идея прикольная, если мало материала, а если за 200 статей, тогда завал, долгая история. Но всё равно спасибо!
Зачем 200 статей?  ^-^ У вас 200 разных модулей тэгов выводится?
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
а это что значит {article Нужная статья}{text}{/article}. Немного не понял как там получается, как ты расписал. Выходит так, что с помощью модуля ArticlesAnywhere я буду выводить все теги или как?
*

filfil2

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
а это что значит {article Нужная статья}{text}{/article}. Немного не понял как там получается, как ты расписал. Выходит так, что с помощью модуля ArticlesAnywhere я буду выводить все теги или как?

Нет, "Нужная статья" - это название статьи, которая создаётся для модуля (п.1). Суть в том, что, образно говоря, мы модуль "превращаем" в статью и весь контент, который находится в модуле, JmRedirect начинает "видеть". Т.е. : 1. и 2. Превращаем нужный модуль в статью  (условно говоря). 3. Выводим его вместо того, который хотим подменить.
Т.е. в вашем случае у вас есть модуль, например, "JoomlaTags", который выводит все тэги. Создаём статью с названием "JoomlaTags", и вставляем туда тэг {module JoomlaTags} - больше никакого текста в этой статье нет. Всё, теперь JmRedirect найдёт содержимое этой статьи (а значит и содержимое модуля) и подменит ссылки. Теперь нужно вместо прежнего модуля JoomlaTags вывести созданную статью. Снимаем с публикации прежний модуль, создаём новый с произвольным HTML-кодом и вставляем туда тэг {article JoomlaTags}{text}{/article}. Ну и потом выводим его туда, где раньше был модуль JoomlaTags.
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
Это полюбому геморой, если мне нужно отсортировать материал по категориям, разделам и дополнительно по тегах, что юзер мог найти то, что есть на сайте, это нужно на каждую статью сделать столько манипуляций, что абанкротиться можно, тогда лучше в ноиндекс и нофоллоу поставить ссылки, меньше гемора и ошибок
*

filfil2

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
Это полюбому геморой, если мне нужно отсортировать материал по категориям, разделам и дополнительно по тегах, что юзер мог найти то, что есть на сайте, это нужно на каждую статью сделать столько манипуляций, что абанкротиться можно, тогда лучше в ноиндекс и нофоллоу поставить ссылки, меньше гемора и ошибок
Честно говоря, не понял, о чём вы %-). Тут создаётся одна единственная статья только с одной целью - подменить модуль так, чтобы его увидел редирект. Эту статью пользователь не увидит, на навигацию и юзабилити эти манипуляции ни коим образом не влияют... Под словом "статья" я имел ввиду "Материал". Я таким образом подменил модуль закладок и теперь всё(ссылки), что бы я туда не запихал, прекрасно подменяется редиректом. Потратил я на это минут 5.
Ну, дело ваше. Моё дело предложить ^-^
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
 я честно та и не понял, как вывести например тег машина. А если 1000 тегов, то как тогда быть?
*

filfil2

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
я честно та и не понял, как вывести например тег машина. А если 1000 тегов, то как тогда быть?
У вас все тэги как выводятся? С помощью одного модуля?
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
есть вывод тегов в модуле, есть вывод тегов через меню. При нажатие на тег, перенаправление идёт не на оригинальную ссылку статьи, а на ссылку статьи которую генерит тег
*

filfil2

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
есть вывод тегов в модуле, есть вывод тегов через меню. При нажатие на тег, перенаправление идёт не на оригинальную ссылку статьи, а на ссылку статьи которую генерит тег
Ну, вы генерите и выводите тэги с помощью компонента JoomlaTags, я правильно понял? То есть модуль компонента вы разместили в какой-то позиции на сайте?
*

dedalik

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

filfil2

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
Да
Отлично. В этом случае, для того, чтобы JmRedirect обрабатывал ссылки, находящиеся в модуле, нам нужно дать понять JmRedirect, что модуль - это статья (материал). Это как если бы вы на работе выполняли обязанности бухгалтера, а официально числились дворником ^-^.  То есть достаточно "сказать" JmRedirect, что ваш модуль, который выводит все тэги на сайт, - это статья (материал). То есть не надо менять что-то в каждой статье, которые есть на сайте.
JmRedirect может просматривать и менять ссылки, к сожалению, только в материалах (статьях). А с помощью этих манипуляций мы его просто обманем и он будет считать, что ваш модуль (в котором все ссылки) - это статья, которую как будто вы напечатали и вручную вставили туда ссылки.

Поэтому в вашем случае эту манипуляцию нужно проделать всего 1 раз, а не 1000  ^-^
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
Спасибо большое за подробное объяснение. + Сейчас буду пробывать
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
Идея хорошая, но не работает на тегах, после нажатия на тег, открывается страница, но редиректа на ней нету
*

filfil2

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
Идея хорошая, но не работает на тегах, после нажатия на тег, открывается страница, но редиректа на ней нету
А... то есть надо, чтобы работало в результатах уже... Ну да, тогда, похоже, работать не будет... Это надо как-то цеплять  JoomlaTags и JmRedirect между собой.... Ибо JmRedirect меняет ссылки только в контенте, который в Joomla значится, как "Материалы".... Тут даже не знаю, что предложить, в PHP не силён....
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
Да такая же история. Спросил ответ у разработчика плагина, пока ответа не дал никакого.
*

lakshmi

  • Захожу иногда
  • 188
  • 5 / 0
Есть такой вопрос кто знает возможно ли сделать так что бы ссылки изменялись также во FLEXIcontent? Обычный материал изменяет, коменты изменяет, но нужно что бы изменялись ссылки в статьях во FLEXI.
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
да я тут уже месяц жду когда сделаю изменения ссылок в joomlatags, в ответ глухая тишина
*

lakshmi

  • Захожу иногда
  • 188
  • 5 / 0
да я тут уже месяц жду когда сделаю изменения ссылок в joomlatags, в ответ глухая тишина
Может народ занят
*

lakshmi

  • Захожу иногда
  • 188
  • 5 / 0
Есть чисто теоретический вопрос когда происходит редирект по ссылке параметр rel="nofollow" передается до файла go.php, передает ли скрипт этот параметр дальше или в этом нет смысла? ^-^
*

Ecspert

  • Захожу иногда
  • 426
  • 12 / 0
А поддержку JomSocial можно сделать?
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
у меня вообще не работает этот плагин.
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
Виноват, работает. не работает в комментариях JComments, я думал он там тоже работает, а оказалось нет.
*

virusnumber9

  • Захожу иногда
  • 72
  • 0 / 0
  • Творец!
Всем добрый вечер. Подскажите, как настроить редирект, чтобы после клика на ссылку, он сам автоматически мгновенно совершал переход без всяких таймеров?

Буду очень благодарен за готовый go.php или Полный его текст :)
*

UksusoFF

  • Захожу иногда
  • 187
  • 5 / 0
Код
<?php
if (isset($_SERVER['QUERY_STRING'])) Header('Location: '.$_SERVER['QUERY_STRING']);
?>
было уже
*

ZHart

  • Захожу иногда
  • 324
  • 53 / 2
Виноват, работает. не работает в комментариях JComments, я думал он там тоже работает, а оказалось нет.

THE KILLERS, у меня в JComments работает отлично (последняя версия плагина).
Тут такая штука — JComments добавляет новые комментарии посредством AJAX-а, и редирект виден только после обновления страницы.
Может в этом дело? ;)

m__g, если появится время — буду очень благодарен за адаптацию плагина к Joomla 1.6.
У меня необходимость уже назрела :)
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
THE KILLERS, у меня в JComments работает отлично (последняя версия плагина).
Тут такая штука — JComments добавляет новые комментарии посредством AJAX-а, и редирект виден только после обновления страницы.
Может в этом дело? ;)
а не подскажете где можно скачать последнюю версию? (ссылка в 1м посте битая).
*

UksusoFF

  • Захожу иногда
  • 187
  • 5 / 0
а не подскажете где можно скачать последнюю версию? (ссылка в 1м посте битая).
гдето в середине темы несколько последних версий :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не могу разобраться как в админке заставить работать свой плагин

Автор kkmspb

Ответов: 3
Просмотров: 1699
Последний ответ 02.09.2024, 11:35:25
от kkmspb
Не работает плагин на хостинге

Автор a7951396

Ответов: 3
Просмотров: 2408
Последний ответ 29.11.2023, 17:56:49
от a7951396
Плагин joomirseopagination доработка

Автор Stasweb

Ответов: 15
Просмотров: 3093
Последний ответ 16.03.2023, 15:00:33
от Stasweb
Формирование ссылок для компонента Joomla Tags

Автор stepan39

Ответов: 6
Просмотров: 3779
Последний ответ 05.02.2023, 15:22:13
от tweenpix
По поводу перенаправления ссылок

Автор itbc

Ответов: 4
Просмотров: 913
Последний ответ 21.04.2021, 13:37:02
от itbc