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

napaJIoH

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
JCE и DOCMan
« : 02.06.2006, 08:20:53 »
Народ, столкнулся с проблемой корректного отображения окна редактора в описании файла DOCMan.
Суть проблемы

Панель инструментов редактора выстроилась в одну строку и выходит за пределы видимости страницы, что очень не удобно пр редактировании. Подозрение на файл стилей, но где именно собака порылась не могу понять.

Спасибо
« Последнее редактирование: 08.09.2006, 07:18:28 от napaJIoH »
*

napaJIoH

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
Re: JCE и DOCMan
« Ответ #1 : 08.09.2006, 06:51:29 »
Никто ничего не говорит, наверно проблема только у меня одного?!!
Еще поковырялся в исходниках редактора, не понятно отношение авторов компонента к спецификации XHTML 1.0, почему-то вместо тэга <br /> везде стоит <br>, вместо <img .... /> стоят <img ....>
И таких ошибок просто куча!!!
« Последнее редактирование: 20.09.2006, 04:33:23 от napaJIoH »
*

yAnTar

  • Захожу иногда
  • 296
  • 81 / 3
Re: JCE и DOCMan
« Ответ #2 : 08.09.2006, 10:30:59 »
В каком браузере эта проблема?
Попробуй в другом, может ее не будет.
Firefox the best, Google the best, jQuery the best.
yAnTar блог
*

napaJIoH

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
Re: JCE и DOCMan
« Ответ #3 : 20.09.2006, 04:31:43 »
К сожалению проблема остается во всех браузерах. :(
*

napaJIoH

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
Re: JCE и DOCMan
« Ответ #4 : 20.09.2006, 08:21:08 »
И так, я нашел как бага фиксится, но не нашел причину ее вызывающую :(
И так нам нужен файл : editor_template.js
Он находится здесь:
http://ваш_сайт/mambots/editors/jce/jscripts/tiny_mce/themes/advanced/
там нам нужно найти такую запись:
Код
<td class="mceToolbarTop" align="'+toolbarAlign+'" height="1" nowrap="nowrap">
и поменять ее на такую:
Код
<td class="mceToolbarTop" align="'+toolbarAlign+'" height="1">
Все, теперь тулбар не расползается на всю ширину, а интелегентно умещается в заданые размеры.

Можно сказать, что не стоило лес городить и оставить все как есть, но мне все таки интересно, почему тулбар нормально отображается в редактировании контента и так себя безобразно ведет в компоненте DOCMan.

Re: JCE и DOCMan
« Ответ #5 : 24.12.2006, 21:16:10 »
К сожелению у меня та же проблема все симптомы болезни те же, замена кода не помогает.
Может кто знает в чем может быть проблема!!!!

Re: JCE и DOCMan
« Ответ #6 : 10.07.2007, 10:50:53 »
Присоединяюсь. Замена кода не помогла!  :-\
*

abat

  • Новичок
  • 3
  • 0 / 0
Re: JCE и DOCMan
« Ответ #7 : 17.07.2007, 10:21:27 »
А мне помогла.. спасибо :D
*

intcorp

  • Захожу иногда
  • 456
  • 12 / 0
Re: JCE и DOCMan
« Ответ #8 : 16.01.2010, 02:06:21 »
Столкнулся с подобной проблемой. Область редактора "убежала" вправо в фаерфоксе 3.5. В эксплорере 8.0 отображается нормально, но кнопка save не работает (в фаерфоксе сохраняется) :(

[вложение удалено Администратором]
*

intcorp

  • Захожу иногда
  • 456
  • 12 / 0
Re: JCE и DOCMan
« Ответ #9 : 16.01.2010, 02:27:40 »
Проблему решил внеся небольшие изменения в файле documents.html.php

[вложение удалено Администратором]
« Последнее редактирование: 16.01.2010, 02:54:04 от intcorp »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться