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

fbr

  • Завсегдатай
  • 1672
  • 206 / 7
Ребята, подскажите плз.
Как заставить простой скрипт jquery работать в Мозилле

Код: javascript
$('body').bind('mousewheel', function(e) {
if(e.originalEvent.wheelDelta / 120 > 0) {
alert ('Scroll up');
} else {
alert ('Scroll down');
}
});

Работает во всех браузерах кроме Лисы
Если вместо mousewheel -> wheel, глючит, определяет все как прокрутку вниз.

Гуглил, пробовал разные решения (DOMMouseScroll, MozMousePixelScroll ...) - все глючные.

Может есть проверенное рабочее решение, как закрыть этот старый баг Мозилы ?
Спасибо)
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Re: JQuery, событие колеса мыши в FF
« Ответ #1 : 05.10.2016, 14:06:11 »
а они же через виндов делают вроде...window.scroll
к примеру:
https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo

Тогда чисто для мозилы колёсико можно: https://developer.mozilla.org/en-US/docs/Web/Events/MozMousePixelScroll

Вот ещё нашёл подключить скрипт: https://css-tricks.com/snippets/jquery/horz-scroll-with-mouse-wheel/

Просто в шапке я не понял, цель, что колёсико делает.там 120 пикселей и что потом? Поднимает вверх или иначе вниз?
« Последнее редактирование: 05.10.2016, 14:13:28 от vipiusss »
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

fbr

  • Завсегдатай
  • 1672
  • 206 / 7
Re: JQuery, событие колеса мыши в FF
« Ответ #2 : 05.10.2016, 14:12:55 »
Я привел упрощенный код части скрипта, чисто для примера
В другом месте у меня задействовано событие scrollTop
Поэтому нужно обрабатывать именно колесо мыши ...
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Re: JQuery, событие колеса мыши в FF
« Ответ #3 : 05.10.2016, 14:15:10 »
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js?ver=1.3.2'></script>
<script type='text/javascript' src='/js/jquery.mousewheel.min.js'></script>

$(function() {

   $("body").mousewheel(function(event, delta) {

      this.scrollTop -= (delta * 120);
    
      event.preventDefault();

   });

});

Попробуйте.Работает?
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

fbr

  • Завсегдатай
  • 1672
  • 206 / 7
Re: JQuery, событие колеса мыши в FF
« Ответ #4 : 05.10.2016, 14:18:30 »
там нужно подключать mousewheel.min.js
не хотелось бы ...
Но попробую. Спасибо)
*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
Re: JQuery, событие колеса мыши в FF
« Ответ #5 : 05.10.2016, 14:42:42 »
mousewheel не стандартное, не рекомендуется

Если вместо mousewheel -> wheel, глючит, определяет все как прокрутку вниз.
с выше приведенным кодом?
а если взять пример из доков? - Listening to this event across browser

Веб-разработка: заказ. Только новая разработка.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: JQuery, событие колеса мыши в FF
« Ответ #6 : 05.10.2016, 14:55:35 »
http://stackoverflow.com/a/5542105

Хотя вышеприведенное решение даже лучше наверное
интернет-блог: http://websiteprog.ru
*

fbr

  • Завсегдатай
  • 1672
  • 206 / 7
Re: JQuery, событие колеса мыши в FF
« Ответ #7 : 05.10.2016, 15:14:36 »
vipiusss, спасибо!
работает во всех браузерах)

Хотелось без доп.скриптов, но 3К как-нибудь переживем))


Ребята, всем спасибо. Ссылки обязательно посмотрю.
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Re: JQuery, событие колеса мыши в FF
« Ответ #8 : 05.10.2016, 15:46:30 »
Хотелось без доп.скриптов

А вы его добавьте в общий квери, и/или в HTML переведите.
Или вынесите нужную часть. Любой каприз )))

P.S. И вам спасибо.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Слетает событие с кнопки

Автор AlexB

Ответов: 2
Просмотров: 556
Последний ответ 18.12.2020, 12:06:37
от AlexB
Не работает плагин на событие onUserAuthenticate

Автор antarey

Ответов: 10
Просмотров: 1063
Последний ответ 23.03.2019, 23:05:23
от antarey
Не работает JQuery хотя он подключен

Автор dm-krv

Ответов: 3
Просмотров: 1301
Последний ответ 05.03.2019, 21:22:13
от dm-krv
Как модифицировать/усовершенствовать код jquery

Автор alex38ann

Ответов: 3
Просмотров: 968
Последний ответ 26.09.2017, 07:55:29
от alex38ann
[Решено] jQuery и работа над элементами в iframe

Автор ELLE

Ответов: 10
Просмотров: 18054
Последний ответ 22.06.2016, 14:32:52
от warlocksp