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

kolyan_kz

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
День добрый!
Подскажите, может кто сталкивался, необходим модуль, который выводит изображения рандомайсом, с заданной директории, с установкой размеров вывода изображения, mod_random_image устраивает, но есть один недочет, он не уменьшает вес картинки, у меня фотки весят по 500 кб, он просто уменьшает размер, а весят они так же, по 500 кб, может есть возможность исправить ее в  mod_random_image? или есть какой другой модуль с такими же функциями? joomla 1.0.15 LE
*

SDemon

  • Осваиваюсь на форуме
  • 32
  • 2 / 1
  • Быть или не быть...
И Вам здрасте!
Модуль который займется броботкой фото?! Типа обрежет ее до нужных размеров с сохранением пропорций сторон, а потом еще и сохранит в отдельный файл или заменит старый? Такой чтоли! А не проще зарание подготовить картинки, самый примитивный редактор это может сделать! К примеру ACDSee может все выбранные под один размер за одну операцию переконвертить с сохранением пропорций сторон!

P.S. Я конечно понимаю, если написал значит нужно! Но проблема на самом деле не в модуле...
*

kolyan_kz

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
коневерторы изображений это конечно хорошо!Только не подходит мне ^-^ модуль этот хочу разместить на главной странице, чтобы он работал как ссылка на источник, но при этом вес картинки был намного меньше оригинала, дабы избежать нагруженность главной страницы!
*

SDemon

  • Осваиваюсь на форуме
  • 32
  • 2 / 1
  • Быть или не быть...
Ну, тогда немного из теории работы такого модуля!
Модуль загрузился на странице и у него задача пойти и взять для обработки твою большую картинку, для последующего уменьшения, так! Другими словами, что бы модулю было с чем работать он должен это загрузить с сервера на комп пользователя, проделать все возложенные на него задачи и вывести на экран уже обработанную картинку! И так при каждой загрузке страницы! Кошмар! для таких манипуляций твоя страница будет грузиться очень и очень долго! Другое дело если модуль один раз такую операцию проделает и сохранит уменьшенные копии в отдельный файл, но тогда смысл заливать большие картинки и мутить с таким модулем?!
Конечно такой модуль можно заставить работать и на сервере, но здесь проблем возникает еще больше! И они разные в зависимости от прав, которые вам предоставит хостер! Как правило запуск на выполнение пользователем чего бы то нибыло на серваке у хостера, блокируется! Исключение составляют программы которые уже установлены на серваке и у вас есть к ним доступ, но с модулем будет другая ситуация! Обычно весь исполняемый код на странице производится ресурсами компьютера пользователя, сервер только обеспечивает хранение данных и поиск различных данных по запросам!

Думаю нормально объяснил ситуацию с твоими картинками! В 99% случаях эта большая картинка всеравно будет грузиться на комп из интернета! И смысла в таком модуле просто отпадает! Быстее страница не загрузится!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не индексирует изображения Google и Яндекс

Автор ashx

Ответов: 1
Просмотров: 2151
Последний ответ 05.06.2009, 02:13:24
от ashx
как сделать превью изображения в анонсе

Автор yetty

Ответов: 3
Просмотров: 4376
Последний ответ 27.05.2009, 15:56:28
от effrit