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

fs444

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
У меня на сайте есть такая страничка


Мне надо отредактировать текст, начинающийся с "Уважаемые студенты...". Я так понял, что текст этот находиться в модуле с id=199, так как страничка грузиться по ссылке "index.php?option=com_comprofiler&Itemid=199". И когда я убираю "Itemid=199", грузится только форма для ввода логина-пароля.

Лезу в модули - там под id 199 есть модуль "Учебный процесс", жму "Редактировать", получаю страничку


Как же мне этот текст отредактировать? ^-^
*

ilma55

  • Захожу иногда
  • 198
  • 5 / 0
если я понимаю, то текст нах-ся в компонентах. вернее в материалах. вот там и надо редактировать весь текст
*

fs444

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
Цитировать
текст нах-ся в компонентах. вернее в материалах. вот там и надо редактировать весь текст
Материалы - это статьи? Гдеж мне там этот текст искать? В поиске моей Joomla нету ничего с заголовком "учебные материалы". Где копать?  ^-^
*

ilma55

  • Захожу иногда
  • 198
  • 5 / 0
не не...   это я прогнал.
ты используешь некую компоненту comprofiler.  я не знаю для чего она нужна.

посмотри ее настройки... или же как и в случае с поиском, покопайся в самих файлах... я так делал, когда попробовал модуль contact подтроить под свой шаблон. гемор еще тот. и это был еще один толчок к написанию своего модуля или компоненты.

просто из этих картинок мне ничего не понятно...
*

nanobot

  • Захожу иногда
  • 54
  • 3 / 2
  • icook.dp.ua
попробуйте найти эту строчку через TC поиск файлов/с текстом
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
Используете CommunityBuilder?
Зайдите в Расширения/менеджер модулей, найдите модуль cb_ligin- авторизация CB. ТАм есть поле Login Post-text (текст после формы авторизации), вот тут поищите свой текст.
Если нет. тогда посмотрите в стандартном модуле авторизации - mod_login, тут же в менеджере модулей, возможно там в поле "Конечный текст" может быть стоять.
Если и здесь нет. Тогда точно узнайте что за модуль (стандартный модуль авторизации или нет), лезьте в папку modules/этот модуль/ищите шаблон вывода и уже там текст, либо аналогично здесь templates/ваш шаблон/html/этот модуль/шаблон вывода.
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

fs444

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
Цитировать
Используете CommunityBuilder?
Ага ^-^

Цитировать
Зайдите в Расширения/менеджер модулей, найдите модуль cb_ligin
ligin или lоgin? Впрочем, ни того ни другого нету))

Цитировать
посмотрите в стандартном модуле авторизации - mod_login
Тоже в Расширения/менеджер модулей? Нет его там)

Цитировать
Тогда точно узнайте что за модуль (стандартный модуль авторизации или нет)
А как мне это узнать? )) По ссылке "index.php?option=com_comprofiler&Itemid=199"? Значит, com_comprofiler? Или это к нему какой-то другой модуль прикладывается с id=199?

Цитировать
попробуйте найти эту строчку через TC поиск файлов/с текстом
А что такое ТС поиск? )) В Joomla?
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
ligin или lоgin? Впрочем, ни того ни другого нету))
Тоже в Расширения/менеджер модулей? Нет его там)
А как мне это узнать? )) По ссылке "index.php?option=com_comprofiler&Itemid=199"? Значит, com_comprofiler? Или это к нему какой-то другой модуль прикладывается с id=199?
А что такое ТС поиск? )) В Joomla?
ну login, да..нету? а что тогда сверху выводит авторизацию?
com_profiler это и есть CB.
Забудьте про id модулей - они тут ни при чем.
TC- это скорее всего total commander.
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

fs444

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
Цитировать
ну login, да..нету? а что тогда сверху выводит авторизацию?
Все происходит по ссылке "index.php?option=com_comprofiler&Itemid=199". Может, POST'ом какие-то параметры передаются..

Цитировать
попробуйте найти эту строчку через TC поиск файлов/с текстом
Я скачал все файлы сайта на жесткий диск и прошелся поиском Проводника в теле файлов по слову "студенты" - ничего..

Может, этот текст где-то в MySQL?
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
ну если с админки вводился текст, тогда конечно в базе.
А если так запихали, тогда может в файле где-то запечатлен.
Но я все склоняюсь к версии что это в модуле прописано. Скиньте сюда скрин всех установленных модулей.
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

fs444

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
Во я дибил.. ) Сделал так, чтобы сразу все модули на странице выводились, и сразу увидел этот текст.

sinbad13, спасибо, что натолкнул на идею ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нужно wiki под Joomla

Автор THE KILLERS

Ответов: 9
Просмотров: 9548
Последний ответ 05.11.2020, 20:56:47
от Kijv
Нужно удалить старый тег Google Analitics и вставить новый

Автор daria_ab

Ответов: 3
Просмотров: 2416
Последний ответ 10.06.2019, 11:48:52
от daria_ab
Как отредактировать модуль mod_yoo_slider?

Автор vitaliy4us

Ответов: 0
Просмотров: 2488
Последний ответ 06.12.2017, 16:14:45
от vitaliy4us
Где хранится и где искать что написали в обратной связи ?

Автор Lzrv

Ответов: 0
Просмотров: 1326
Последний ответ 04.12.2017, 21:17:14
от Lzrv
Не вставляется в текст видео с Ютуба

Автор filipp78

Ответов: 0
Просмотров: 1467
Последний ответ 16.02.2017, 12:02:25
от filipp78