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

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Скорей всего упустил этот момент и не фильтрую по состоянию. Это легко решить просто допиши после 33 строки
Код: php
$model->setState('filter.published', 1);


За труды, конечно спасибо, но в общем-то оказалось, что я зря корячился с макетом вывода. Оказывается в ВК есть техническое ограничение. Если прикрепить в RSS ленке изображение - вк режет все переносы строк внутри <description></description>. Пробовал по разному цеплять и через img и через отдельный параметр enclosure. Пробовал оборачивать в CDATA и без, короче это не баг, а походу так задумано самим ВК.

Я дико извиняюсь, но похоже я зря только напряг тебя. Скинь в личку мобильник, с меня заправка. А плагин может кому пригодится еще. Я чувствую, что если ты его допилишь и закинешь куда-нить он определенно будет пользоваться спросом)

29-го августа ВКонтакте предоставила возможность всем желающим автоматически вытягивать новости с сайта в виде постов и статей. Текст новости:
https://vk.com/wall-32295218_448619
« Последнее редактирование: 15.10.2018, 17:51:14 от dm-krv »
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
плагин по-любому надо будет допилить.
а то народ постоянно упирается в родной негибкий генератор, так что усе не зря  ;)
*

ProtectYourSite

  • Живу я здесь
  • 2366
  • 138 / 4
  • Безопасность вебсайтов
А что за проблемы с переносами строк ?
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
А что за проблемы с переносами строк ?

Если просто пишешь в вводной части текст (без картинок), то все нормально. Но стоить нацепить картинку для вводного текста (чтобы ВК баннер к посту подгружал), так нафиг режутся все переносы строк в тексте. Если есть группа ВК подцепите там RSS ленту в настройках, по экспериментируйте, поймете о чем я.
*

ProtectYourSite

  • Живу я здесь
  • 2366
  • 138 / 4
  • Безопасность вебсайтов
А чем переносы в тексте заданы?
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
А чем переносы в тексте заданы?

Пробовал, как кодовые переносы (\r\n <p> <br>), так и реальные, символьные. Все работает, пока нет картинки. Стоить добавить картинку - не важно, в сам пост, или просто отдельным тегом внутри item так все переносы в водном тексте режутся. Короче, это явно так задумано, так как режется явно спецом. Короче фиг с ним, я решил делать все без баннеров.
*

kep

  • Осваиваюсь на форуме
  • 14
  • 1 / 0
Зависит есть ли разделение на вводный текст в материале.
ТС, можно попробовать модифицировать мою ленту для турбо страниц Яндекса
А как там можно вывести материалы с определенной меткой?
*

ProtectYourSite

  • Живу я здесь
  • 2366
  • 138 / 4
  • Безопасность вебсайтов
Надо смотреть, где метки в бд хранятся и добавлять условие в запрос
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[РЕШЕНО]Скрыть пункт меню на мобильных устройствах

Автор lexxbry

Ответов: 16
Просмотров: 6998
Последний ответ 23.05.2023, 07:22:49
от geral
Не сворачивается Offcanvas Menu Helix3, якорная ссылка. Landing Page - РЕШЕНО

Автор alekshavan

Ответов: 21
Просмотров: 4270
Последний ответ 15.10.2022, 10:18:46
от forsight
[Решено] Модули шаблона Helix 3

Автор Egoritch

Ответов: 3
Просмотров: 941
Последний ответ 27.05.2021, 13:26:52
от Egoritch
[Решено] CSS-класс заголовка модуля

Автор schel4ok

Ответов: 36
Просмотров: 18651
Последний ответ 06.04.2021, 23:35:20
от Wak
[РЕШЕНО]Обернуть в тег &lt;a&gt;

Автор AlexB

Ответов: 4
Просмотров: 734
Последний ответ 21.11.2020, 20:11:51
от AlexB