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

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

createa

  • Захожу иногда
  • 263
  • 0 / 1
Спасибо за плагин. Работает хорошо. Только как убрать стили из кода страницы?
Я про это:
Код
<style type="text/css">

    .sp-head-click a{font-size: 16px; font-style: normal; color: #a9b301 !important; }
.sp-head{border: 0px #ccc dashed; font-weight: bold;
            -webkit-border-radius: 0px;
            -moz-border-radius: 0px;
            -khtml-border-radius: 0px;
            border-radius: 0px;
            width: 95%;
            background-color: #ffffff;
            font-family: Open Sans;}
.sp-body{font-size: 11px; font-weight: lighter; background: #ffffff; border: 0px #ccc none;
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
-khtml-border-radius: 0px;
border-radius: 0px;
width: 100%;
font-style: normal;
padding: 0px}

  </style>
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
В общем никак, они реализуют стили, назначенные в админке.
*

createa

  • Захожу иногда
  • 263
  • 0 / 1
жаль, что нельзя это убрать в файл...
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Нахождение стилей в странице не является криминалом. Все валидно.
*

bummm

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Ой спасибо за плагин! Главное что с галереями работает! То есть, галереи грузятся лишь когда раскрываешь спойлер!
Жаль спойлер в спойлере не работает :) Тогда можно было бы страницу сделать поистину любую :) Может сделаете?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

bummm

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Можно для отдельного спойлера стиль поменять? Ну прямо в статье какой-то.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

Ramil8009

  • Захожу иногда
  • 147
  • 1 / 1
Не скачивается, белая страница при клике на СКАЧАТЬ
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

Ctrogo

  • Осваиваюсь на форуме
  • 19
  • 2 / 0
Здравствуйте, вроде все работает, но на странице где есть спойлер вылазит ошибка  ошибка:

 Strict Standards: Only variables should be assigned by reference in /usr/home/hosting/wt4013503/htdocs/plugins/content/LVSpoiler/LVSpoiler.php on line 245
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Уменьшите уровень показа ошибок в настройках Joomla.
*

jadded

  • Новичок
  • 2
  • 0 / 0
« Последнее редактирование: 25.09.2014, 18:09:57 от jadded »
*

Beer

  • Завсегдатай
  • 1103
  • 43 / 1
  • БИРУ - БИР!
GET /plugins/content/LVSpoiler/LVSpoiler/error-404 HTTP/1.1

Код
$(this).after('<img class="spoilerloader" src="/plugins/content/LVSpoiler/LVSpoiler/loading2.gif" />'); //перед незагруженным изображением выводим изображение лоадера

/LVSpoiler/LVSpoiler

Кажись апичатка тут.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

Beer

  • Завсегдатай
  • 1103
  • 43 / 1
  • БИРУ - БИР!
Еще и в языковом файле En то же самое.
Во у тебя скорость программирования - код пишешь со скоростью сообщений на форуме!
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

Beer

  • Завсегдатай
  • 1103
  • 43 / 1
  • БИРУ - БИР!
Из логов ошибок.

PBSP_DESC="<p><img src='/plugins/content/LVSpoiler/LVSpoiler/icon.jpg'>
Нету папки  /LVSpoiler/LVSpoiler/
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
И как связаны логи ошибок со скоростью программирования?
*

Beer

  • Завсегдатай
  • 1103
  • 43 / 1
  • БИРУ - БИР!
Я медленнее буквы русские пишу нежели ты программируешь.
В общем - молодец.
*

maratellit

  • Новичок
  • 6
  • 0 / 0
Прошу помочь! вот страничка http://marsatellit.com.ua/index.php/prajs-list на которой вставил текст
{spoiler title=Заголовок opened=0}Скрытый текст{/spoiler} но спойлер не появился.... что может быть? спасибо. Сайт делал сам если тыкните гда смотреть буду благодарен)) Плагин установлен и активирован
« Последнее редактирование: 27.11.2014, 16:41:52 от maratellit »
*

maratellit

  • Новичок
  • 6
  • 0 / 0
интересно а почему? не подскажете?
*

Beer

  • Завсегдатай
  • 1103
  • 43 / 1
  • БИРУ - БИР!
Ты грузишь его так:
Код
<script src="/js\jquery-1.11.1.min.js" type="text/javascript"></script>
А сам то скрипт jquery-1.11.1.min.js где лежит или откуда ты его хочешь загрузить?
Т.е. припиши правильно путь к скрипту.
*

maratellit

  • Новичок
  • 6
  • 0 / 0
ок! счас попробую
*

maratellit

  • Новичок
  • 6
  • 0 / 0
поправил ... все равно не идет((
*

maratellit

  • Новичок
  • 6
  • 0 / 0
установлена Joomla 2.5.27.  плагин версия 1.0.8 (для версии джумблы 2.5)
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Во первых на такой версии  jQuery легко может не работать. Слишком много там урезано. Во вторых посмотрите чтобы на странице грузилась только одна библиотека jQery, а все скрипты, использующие ее грузились после библиотеки. Правила простые, но их надо соблюдать.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин "Русская типографика"

Автор Physicist

Ответов: 261
Просмотров: 156145
Последний ответ 13.03.2025, 20:06:50
от Olg
Мастерю плагин для админки - оплата налом или по карте при самовывозе

Автор kkmspb

Ответов: 0
Просмотров: 1280
Последний ответ 27.08.2024, 15:39:37
от kkmspb
Плагин StopKids для маркировки сайта знаком 18+ для Joomla 1.5-3.x

Автор ecolora

Ответов: 40
Просмотров: 22643
Последний ответ 19.03.2023, 18:55:08
от ecolora
Компонент Commedia и плагин mp3browser для медиа-сайтов

Автор ecolora

Ответов: 557
Просмотров: 127802
Последний ответ 13.03.2023, 00:25:14
от ecolora
Плагин seoLinks

Автор alexandr-spb

Ответов: 0
Просмотров: 2638
Последний ответ 26.01.2023, 23:08:41
от alexandr-spb