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

rishat

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Всем привет. Столкнулся с проблемой, k2 attachments в браузере Opera и на стандартном браузере Android отдает прикрепленные файлы jar, apk в виде zip архивов, что для меня недопустимо. Всё перековырял, проблему решить так и не смог. На сервере mime-type для этих файлов настроены. У кого есть решение?  :(
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
... в браузере Opera и на стандартном браузере Android ...

То есть в мозилле, IE, хроме этого нет?
*

rishat

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
То есть в мозилле, IE, хроме этого нет?

Так точно. Где то я находил тут подобные темы, у человека doc также переименовывался в zip, вот ему и посоветовали doc в zip архивировать и заливать в k2 attachments. Но в моем случае, это не решение. Читал на официальном сайте топики, и находил подобные темы с pdf файлами и прочее, вообщем по сути нужно ковырять administrator/components/com_k2/lib/class.upload.php но для apk решения к сожалению я пока не нашел.
« Последнее редактирование: 22.10.2011, 10:59:03 от rishat »
*

rishat

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Готов заплатить за решение проблемы.
Хочется получить работающий плагин. Желательно избавиться от хэша, отображая прямой путь.
*

rishat

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Проблему решил своими силами. Код конечно у K2 замороченный до ужаса! Как его писали мне не понятно, но всё же кому надо решение в файле class.upload.php:

Код

            // APK & JAR support
            switch ($this->file_src_name_ext)
            {
                case "apk":
                $this->file_src_mime = "application/vnd.android.package-archive";
                break;
               
                case "jar":
                $this->file_src_mime = "application/java-archive";
                break;   
            }


Вот такое вот грубое вмешательство.
*

rishat

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Код вставлять до // checks MIME type with Fileinfo PECL extension
*

rishat

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Так же требуется обновить файл /www/administrator/components/com_k2/lib/elfinder/mime.types для того, чтобы можно было заливать данные файлы.. пример целиком:

Спойлер
[свернуть]

А еще нужно добавить классы в /www/administrator/components/com_k2/lib/class.upload.php

после строчки $this->allowed = array(
Код
			'application/vnd.android.package-archive',
'application/java-archive',

и после строчки $this->mime_types = array(

Код
			'apk' => 'application/vnd.android.package-archive',
'jar' => 'application/java-archive',

Вроде всё!
« Последнее редактирование: 22.10.2011, 15:41:29 от rishat »
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Проблему решил своими силами. Код конечно у K2 замороченный до ужаса! Как его писали мне не понятно, но всё же кому надо решение в файле class.upload.php:

Это не их код. Авторство можете посмотреть в этом же файле, заодно сходить на сайт автора.
Он кстати обновляет библиотеку.

Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не открываются файлы после загрузки на сайт

Автор GeniusUd

Ответов: 1
Просмотров: 850
Последний ответ 01.02.2021, 17:19:38
от voland
Слетели права на файлы в папке /media/k2/items/cache/

Автор marat-209

Ответов: 1
Просмотров: 1254
Последний ответ 24.05.2016, 14:56:47
от marat-209
Не отдает 404 ошибку вместо битых ссылок!

Автор klara7

Ответов: 0
Просмотров: 1269
Последний ответ 19.09.2015, 21:33:17
от klara7
Дубли. Один материал в нескольких категориях, как решить проблему?

Автор h.vitaly

Ответов: 4
Просмотров: 1154
Последний ответ 25.06.2015, 20:18:31
от h.vitaly
K2 Attachments расширение функционала

Автор therishat

Ответов: 0
Просмотров: 1120
Последний ответ 30.04.2015, 10:36:12
от therishat