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

olga-007

  • Новичок
  • 7
  • 0 / 0
Всем привет,
подскажите пожалуйста, если кто сталкивался с такой проблемой. Есть исходная картинка, размер примерно 200Кб. Когда загружаем ее в материал, K2 генерирует картинки разных размеров. Самая большая оказывается по размеру в килобайтах в 1,5-2 раза больше исходной.
Почему так происходит?
*

DragonZX

  • Захожу иногда
  • 68
  • 3 / 1
Потому что К2 кеширует данную картинку и если в формате указан такой размер, он перестраивает картинку таким образом, чтобы она была нужного размера. Если качество было хуже, он автоматом увеличивает картинку.
Вобще я бы советовал использовать стандартный менеджер материалов, сейчас реально он лишь немногим уступает K2, а окончательный вес не в пример меньше.
*

olga-007

  • Новичок
  • 7
  • 0 / 0
DragonZX, спасибо за оперативный ответ, но вопрос не о размерах в пикселях, с ними все ясно, а именно о размерах в килобайтах.
Размер исходной картинки, которую загружаю в материал - 299Кб (в пикселях по ширине - 1200)
Размер самой большой картинки (XL), которую генерирует K2 - 735Кб (в пикселях по ширине - 1150)
Размер L - 465Кб
Размер M - 62Кб (уже терпимо)


Я не могу понять, почему для самого большого изображения, если K2 уменьшает ширину исходного, то размер его в килобайтах в разы увеличивается? В результате сайт долго грузится. Вес одной главной страницы 6,6 Мб, из них 6 Мб занимают картинки.

 :(
*

dimat84

  • Давно я тут
  • 517
  • 20 / 0
тоже замечал такую фиговину, но у меня не так вроде сильно вес добавляет, поэтому не стал заморачиватся, попробуй в настройках "Качество обработанных изображений" поставить поменьше
*

DragonZX

  • Захожу иногда
  • 68
  • 3 / 1
DragonZX, спасибо за оперативный ответ, но вопрос не о размерах в пикселях, с ними все ясно, а именно о размерах в килобайтах.
Размер исходной картинки, которую загружаю в материал - 299Кб (в пикселях по ширине - 1200)
Размер самой большой картинки (XL), которую генерирует K2 - 735Кб (в пикселях по ширине - 1150)
Размер L - 465Кб
Размер M - 62Кб (уже терпимо)


Я не могу понять, почему для самого большого изображения, если K2 уменьшает ширину исходного, то размер его в килобайтах в разы увеличивается? В результате сайт долго грузится. Вес одной главной страницы 6,6 Мб, из них 6 Мб занимают картинки.

 :(
Потому, что у картинки JPEG кроме пикселей есть еще свойства разрешения, цветности, качества и т.п.
*

Siber

  • Захожу иногда
  • 150
  • 9 / 0
Да, посмотрите размер этих изображений в Photoshop.
Фото, например, по размеру файла 4Мб, при открытии в Photoshop, в свойствах, - ~40Мб. При сохранении может быть больше размера исходного файла в зависимости от алгоритма сохранения.
*

olga-007

  • Новичок
  • 7
  • 0 / 0
dimat, спасибо, помогло - было качество 100%, заменила на 80%, существенно уменьшился размер, даже стал меньше исходного.
DragonZX, Siber, тоже большое спасибо. Картинку оптимизировала в Фотошопе для веб и устройств (Ctrl+Alt+Shift+S), при сохранении показывало одинаковые размеры и в фотошопе, и в проводнике Windows.

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

Слайдер картинок из встроенной галереи K2

Автор bybus

Ответов: 0
Просмотров: 874
Последний ответ 14.11.2017, 00:00:06
от bybus
Вывод фото, картинок из контенкта К2 - ?

Автор warlocksp

Ответов: 2
Просмотров: 1102
Последний ответ 12.10.2016, 15:10:27
от warlocksp
Как ограничить размер description в к2?

Автор lyana

Ответов: 2
Просмотров: 1237
Последний ответ 22.03.2016, 13:56:03
от lyana
Категории на главной в виде картинок

Автор Alexis001

Ответов: 0
Просмотров: 988
Последний ответ 31.01.2016, 18:27:20
от Alexis001
Не могу подогнать размер плиток на главной

Автор silatal

Ответов: 2
Просмотров: 1081
Последний ответ 27.08.2015, 19:58:20
от silatal