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

Stich SPb

  • Захожу иногда
  • 231
  • 5 / 0
Как можно масштабировать изображения в категории?
Сейчас в настройках стоит размер 200х200 пикселей, но не для всех категорий он подходит.
В некоторых нужно уменьшить тумбинал до 100 пикселей

Сейчас изображение выводится кодом:
Код
  	<a href="<?php echo $product_flypage ?>" title="<?php echo $product_name ?>">
        <?php echo ps_product::image_tag( $product_thumb_image, 'class="browseProductImage" border="0" title="'.$product_name.'" alt="'.$product_name .'"' )?>
       </a>

Что нужно изменить или добавить? Подскажите пожалуйста.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
если вы имели в виду эскизы в шаблоне категории, то не надо код менять, в админке меняйте размер эскизов: настройки>сайт>ширина эскизов-высота эскизов
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Stich SPb

  • Захожу иногда
  • 231
  • 5 / 0
В том то и дело, что мне нужны картинки разных размеров в разных категориях.
Например, в категории "Принтеры" картинки 200х200,
а в категории "Расходные материалы" картинки 100х100
Категории будут выводиться разными шаблонами. Так вот, мне нужно доработать шаблон для расходных материалов, чтоб он выводил уменьшенную (масштабированную) картинку тумбинала.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
тогда, наверное, только платно, я готовых решений не знаю.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Stich SPb

  • Захожу иногда
  • 231
  • 5 / 0
Ответ нашел сам "методом тыка".
Все работает, ставьте плюсик, если кому пригодится

Код, который сверху, меняем на:

Код
		<a href="<?php echo $product_flypage ?>" title="<?php echo $product_name ?>">
<img src="<?php echo $product_thumb_image ?>" width="90"/ ></td>
</a>


Берется тумбинал товара и масштабируется до 90 пикселей по ширине какой бы он ни был в настройках магазина.
Можно вместо ширины задать высоту.

И все!
« Последнее редактирование: 12.03.2013, 22:10:05 от Stich SPb »
*

fsv

  • Moderator
  • 2781
  • 411 / 2
Берется тумбинал товара и масштабируется до 90 пикселей по ширине какой бы он ни был в настройках магазина.
И в чем принципиальная разница? Как решается поставленная задача:
Цитировать
нужны картинки разных размеров в разных категориях.
?
Как один из возможных вариантов, если категорий куча, и везде в них разные размеры картинок: вместо "90" - переменную, ее значение в админке в доп.поле задавать. Только это для ленивых. Лучше ручками подготовить нужные, залить и не грузить постоянно масштабированием сервер.
Веб-разработка: заказ. Только новая разработка.
*

Stich SPb

  • Захожу иногда
  • 231
  • 5 / 0
У меня сотни принтеров и тысячи картриджей, постоянно добавляются новые позиции.
Проще сделать один шаблон для принтеров и один для расходки, и включать нужный в категории.
Тогда в админке будет постоянный размер, а в категориях разный и не нужно ничего делать ручками и даже думать про это.
Это как раз вариант для ленивых.
Масштабированием грузится не сервер, а браузер. Современный комп ничего не заметит. Специально вывалил сейчас 50 товаров на страницу- загрузка процессора не изменялась
*

Stich SPb

  • Захожу иногда
  • 231
  • 5 / 0
И в чем принципиальная разница? Как решается поставленная задача:?

Теперь картинки в принтерах 200х200, а в расходке 90х90. При этом тумбиналы одинаковые в папке VirtueMart.
Моя задача, вывести раходку с меньшими тумбиналами для экономии места, полностью решена.
Принтеры я вывожу по 2 штуки в строке с крупными картинками, расходку вывожу в одну строку как прайс, только слева маленькая картинка.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
пропишите еще title и alt, они влияют на индексирование. и задайте сразу высоту и ширину.
а вот это

Масштабированием грузится не сервер, а браузер.
неправильно - масштабирование выполняется правленным вами же php-скриптом на сервере.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Stich SPb

  • Захожу иногда
  • 231
  • 5 / 0
пропишите еще title и alt, они влияют на индексирование. и задайте сразу высоту и ширину.
а вот этонеправильно - масштабирование выполняется правленным вами же php-скриптом на сервере.
Спасибо, прописал. Высоту специально не задавал, тк картинки в разных пропорциях.
А по поводу загрузки сервера, посмотрю, что будет и подумаю.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Несколько изображений для товара/ Лупа для изображения/ Magic Zoom

Автор antoha333

Ответов: 41
Просмотров: 26674
Последний ответ 13.11.2015, 16:08:16
от sonics
Описание категории опустить под товары

Автор angelo4ek-001

Ответов: 5
Просмотров: 2258
Последний ответ 12.11.2015, 01:53:39
от fsv
Как сделать отображение атрибутов товара в категории ?

Автор Timer

Ответов: 0
Просмотров: 1559
Последний ответ 21.01.2015, 23:43:33
от Timer
VirtueMart -как убрать слово "КАТЕГОРИИ" на первой странице магазина

Автор stalker828

Ответов: 12
Просмотров: 9513
Последний ответ 30.07.2014, 11:51:16
от ZAIRA
Как перенести кнопку редактирования товара с fly-страницы на страницу категории?

Автор longestall

Ответов: 5
Просмотров: 2392
Последний ответ 09.07.2014, 17:40:59
от talentas