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

Sareth

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Недавно решил поставить свой первый CMS.
Нашел судя по отзывам очень хорошую систему, Joomla  (версия 1.5.12) . л (не без проблем) , поюзал немного, почитал книги, понял что где и как, и начал ставить всевозможные плагины, модули, и т.д.
Впервые поставил визуальный редактор, тоесть нифига в нем не шарю... Нажимаю кнопку Insert e (как во встроеном TinyMCE, там все норм работало) , открывается окно Image Manager, выбираю картинку какую хочу загрузить, клацаю upload, пишет: "unable to upload file". Если картинка уже загружена на сервак то нормально вставляется в материал, а из самого редактора грузить новую на сервер не хочет...

И еще при установке плагина написано:
 
"JCE would not exist without these great libraries/scripts:

Joomla! - obviously
TinyMCE
Mootools
PHPThumb
getID3
Silk icon set 1.3"

Скачал все эти библиотеки и скрипты, только вот не знаю куда их пихать... Может из-за них и не загружаются картинки...

Обясните неопытному пользователю пожалуйста в чем мои ошибки
« Последнее редактирование: 11.08.2009, 19:03:20 от smart »
*

ChaosDay

  • Захожу иногда
  • 365
  • 104 / 1
Выставьте нужные права(в вашем случае скорее всего 777) на папку, с загружаемыми изображениями.
Цитировать
Скачал все эти библиотеки и скрипты, только вот не знаю куда их пихать... Может из-за них и не загружаются картинки...
Это просто перечень сторонних библиотек/файлов уже включенных в JCE.
*

Sareth

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Выставьте нужные права(в вашем случае скорее всего 777) на папку, с загружаемыми изображениями.

В этом и весь прикол что права установлены на всех папках...
*

Sareth

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Решил переставить Joomla, поставил версию 1.5.14
Сходу залил JCE 1.5.4
Думал может решится проблема с загрузкой картинок, а оно стало еще хуже...
Когда нажимаю кнопку "Добавить материал" открывает просто пустую страницу... если отключаю плагин JCE включаю TinyMCE все норм... или это я такой нуб или хз что вообще происходит...
*

ChaosDay

  • Захожу иногда
  • 365
  • 104 / 1
При установке JCE Admin/Editor фтп был включен? Что пишет в php_error.log?
*

Sareth

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Что имеется в виду под "фтп был выключен"? Если то что я не был подключен к нему через FileZilla или какой другой фтп клиент, то тогда был выключен. Насчет php_error.log, во первых у меня нету доступа к нему, во вторых наверное он выключен. Можете посмотреть phpinfo о моем провайдере перейдя по этой ссылке http://1c-poltava.com.ua/phpinfo.php может быть чем-то поможет
*

ChaosDay

  • Захожу иногда
  • 365
  • 104 / 1
Подразумевалось: был ли включен FTP-Layer в Глобальной конфигурации Joomla? Если нет, попробуйте полностью  (заодно почистить папки, если не всё удалилось) , потом включить FTP и установить заново.
P.S. И заодно узнайте у хостера есть ли возможность перейти на php5.
« Последнее редактирование: 11.08.2009, 19:05:14 от smart »
*

Sareth

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Переустановил, фтп - включил, эффекта - ноль. Насчет php5, на е-мейл четкого ответа не дали, попросили позвонить, звоню - никто не отвечает...
*

Sareth

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Решил вернуть предидущую версию Joomla (1.5.12)  
И что Вы думаете? Заработало! Причем и проблема с загрузкой картинок тоже! хоть и дальше пишет "unable to upload file" но файлы загружаются!
Наверное кто-то где-то перемудрил.
Или JCE 1.5.4 не подходит к Joomla 1.5.14, или Joomla 1.5.14 не подхватывает JCE (что более вероятно, так как пытался ставить более раннюю версию этого редактора, что приводило к тому же эффекту), или все ж это у меня кривые руки...
А может и на хостинге чего-то не хватает...
Всем спасибо за проявленное внимание к моей проблеме, но она хоть и через ж... но все же исправилась)  

P.S.: Если у кого-то будут какие-то мысли почему все так, пишите буду рад поэкспериментировать
« Последнее редактирование: 11.08.2009, 19:10:53 от smart »
*

ChaosDay

  • Захожу иногда
  • 365
  • 104 / 1
У меня JCE 1.5.4 нормально работает на J1.5.14 - так что проблема точно не в версиях. Возможно проблема в 4 версии php, как минимум спросите хостера где можно посмотреть php_error.log - тогда можно будет точнее определить в чем проблема.
*

Sareth

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Спасибо за совет!
Попробую дозвониться этим гаврикам и сказать все, что я думаю про их хостинг(причем ПЛАТНЫЙ)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться