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

кодировка в RSS
« : 15.02.2008, 10:57:26 »
Сделал импорт RSS ленты на локальный сайт.
Кодировка сервера по умолчанию UTF-8.
Лента к примеру http://bash.org.ru/rss/ .

В итоге что видим:

Цитировать
?????? #394803
Dreiko to Dzirt_DoUrden
???, ?? ??? ??????? ?????? ???? ? ???? ??????...???? ? ?????? ????,??? ?? ????? ??????? ? ??????? ? ????????????? ???????. ? ??????,???? ???? ????? ?????????????? ??????? ???? ?????????,?????? ??? ?? ???? ?????? :( ? ??????? ??????? - ??????, ?????? ?????? ? ??, ?? ??? ??????? ???? ???? ?????? "??????? ???", ????? ??????? ??????????? ?? ????? ????????? ?????? ??? ?????????????????? ?????????????? O_o

хелп ми;)
 

Re: кодировка в RSS
« Ответ #1 : 15.02.2008, 11:48:53 »
А остальной сайт работает нормально?
В моей UTF-8 версии joostina, как ни страно, эта лента работает с любым положением опции "перекодировать из UTF-8" О_о

Re: кодировка в RSS
« Ответ #2 : 15.02.2008, 12:46:23 »
Честно скажу не помню..по моему помог .htaccess  с "AddDefaultCharset windows-1251"
Можно поподробнее о "эта лента работает с любым положением опции "перекодировать из UTF-8""

вот как у меня создается:

Re: кодировка в RSS
« Ответ #3 : 15.02.2008, 12:52:45 »
Зашел в папку кеша,открыл 1 рассылку и увидел:

Код
                  1330909007<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Bash.Org.Ru</title>
<link>http://bash.org.ru/</link>
<atom:link href="http://bash.org.ru/rss/" rel="self" type="application/rss+xml" />
<description>Цитатник Рунета</description>
<language>ru</language>
<item>
<guid>http://bash.org.ru/quote/394805</guid>
<link>http://bash.org.ru/quote/394805</link>
<title>Цитата #394805</title>
<author>DarkRider</author>
<pubDate>Thu, 14 Feb 2008 22:03:46 +0400</pubDate>
<description><![CDATA[Начальнег: Дмитрий, если бы Инет у нас был индейцем, то у него имя было бы &quot;Большой Утренний ***&quot;. Почини уже проксю, а то твоя месячная премия очень рискует.]]></description>
</item>
<item>

То есть слив на сервер идет нормальный.

Re: кодировка в RSS
« Ответ #4 : 15.02.2008, 13:00:02 »
Залил в папку с кешем и самим рсс-грабером
.htaccess -> AddDefaultCharset windows-1251
толку ноль

Re: кодировка в RSS
« Ответ #5 : 15.02.2008, 13:09:39 »
Так у тебя joomla 1.0.12 Lavra, судя по скриншоту! А тут Joostina обсуждается.
Её не юзал, наверное в соседнем форуме тебе помогут ;)
*

pedrosoft

  • Захожу иногда
  • 367
  • 113 / 7
Re: кодировка в RSS
« Ответ #6 : 15.02.2008, 13:10:42 »
видимо на сервере стоит php5
вот решение проблемы http://joomlaforum.ru/index.php/topic,3722.0.html
если используете Лавру то достаточно выполнить второй предложеный варинт: подправить joomla.php
если оригинальная то первый вариант с использованием iconv
Интернет Хостинг Центр: отличные цены, лучшее качество, расположение в дата-центре «Оверсан-Меркурий»

Re: кодировка в RSS
« Ответ #7 : 15.02.2008, 13:39:08 »
спасибо.Прошу прошения,ошибся темой :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Кодировка RSS

Автор DIvan

Ответов: 46
Просмотров: 45601
Последний ответ 08.02.2011, 04:54:24
от otshelnik
Кривая кодировка в RSS при импорте из Joomla 1.5.14

Автор VP

Ответов: 0
Просмотров: 6189
Последний ответ 29.09.2009, 20:48:49
от VP
Кодировка стандартного модуля

Автор malike

Ответов: 2
Просмотров: 5301
Последний ответ 01.04.2008, 15:21:52
от FIJN