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

PluSh_KiLLeR

  • Захожу иногда
  • 78
  • 2 / 0
Суть вопроса есть меню с картинками хотелось бы что бы при наведении на них они (картинки) как бы тонировались (такая фишка есть в датсо галерее). Ну или какой фильтр на них накладывался что можно сделать с помощью css ??
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
на событие hover для элемента вешаешь стили:
Код
background-color: #000;
filter: progid: DXImageTransform.Microsoft.Alpha(opacity=40);
    -moz-opacity: 0.4;    /* Mozilla 1.6 è íèæå */
    -khtml-opacity: 0.4;  /* Konqueror 3.1, Safari 1.1 */
    opacity: 0.4;         /* CSS3 - Mozilla 1.7b +, Firefox 0.9 +,
                             Safari 1.2+, Opera 9 */
    filter: alpha(opacity=40); /* IE 5.5+*/
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

PluSh_KiLLeR

  • Захожу иногда
  • 78
  • 2 / 0
Вот спасибо ;)
вот только в осле почему то не работает ;(
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
вот только в осле почему то не работает ;(
filter: alpha(opacity=40); /* IE 5.5+*/ - хак для ИЕ, проверено - у меня работает везде
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

PluSh_KiLLeR

  • Захожу иногда
  • 78
  • 2 / 0
http://www.azbukazemli.ru/ посмотри картинку в низу с права у меня стоит осел последний может с ним какой то глюк ??
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Код: html4strict
<a class="img2" href="#"><img src="img" border="0" /></a>
и в стилях
Код: css
a.img2:hover img {
    filter: progid: DXImageTransform.Microsoft.Alpha(opacity=80);
    -moz-opacity: 0.8;    /* Mozilla 1.6 è íèæå */
    -khtml-opacity: 0.8;  /* Konqueror 3.1, Safari 1.1 */
    opacity: 0.8;         /* CSS3 - Mozilla 1.7b +, Firefox 0.9 +,
                             Safari 1.2+, Opera 9 */
    filter: alpha(opacity=80); /* IE 5.5+*/
}
« Последнее редактирование: 20.08.2008, 18:26:08 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

PluSh_KiLLeR

  • Захожу иногда
  • 78
  • 2 / 0
А вот теперь работает ;)
Спасибо получи + в догонку ;)
*

DeeByZ

  • Новичок
  • 7
  • 0 / 0
А как сделать так чтобы картинки изначально были затонированны , а при наведении они наоборот становились нормальными ?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
А как сделать так чтобы картинки изначально были затонированны , а при наведении они наоборот становились нормальными ?
точно так же, но только наоборот
Для картинки a.img2 img делать фильтры, а для a.img2:hover img делать фильтры в 100%
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

DeeByZ

  • Новичок
  • 7
  • 0 / 0
в ксс прописал:

a.img2 img{
    filter: progid: DXImageTransform.Microsoft.Alpha(opacity=80);
    -moz-opacity: 0.8;    /* Mozilla 1.6 è íèæå */
    -khtml-opacity: 0.8;  /* Konqueror 3.1, Safari 1.1 */
    opacity: 0.8;         /* CSS3 - Mozilla 1.7b +, Firefox 0.9 +,
                             Safari 1.2+, Opera 9 */
    filter: alpha(opacity=80); /* IE 5.5+*/
}
    

a.img2:hover img {
    filter: progid: DXImageTransform.Microsoft.Alpha(opacity=100);
    -moz-opacity: 1;    /* Mozilla 1.6 è íèæå */
    -khtml-opacity: 1;  /* Konqueror 3.1, Safari 1.1 */
    opacity: 1;         /* CSS3 - Mozilla 1.7b +, Firefox 0.9 +,
                             Safari 1.2+, Opera 9 */
    filter: alpha(opacity=100); /* IE 5.5+*/
}

в хтмл прописал:

<a class="img2"><IMG SRC="http://www.site.ru/counter.php" WIDTH="88" HEIGHT="31" BORDER=0></a><br>

Все равно работает как раньше :( что не так то ?
*

Siberex

  • Захожу иногда
  • 66
  • 0 / 0
Re: При наведении картинка меняет цвет
« Ответ #10 : 31.05.2012, 00:05:06 »
Такая схема применима к обычным картинка в статьях? Ну, т.е. чтоб при наведении на картинку она менялась
*

AlterEgo

  • Захожу иногда
  • 170
  • 71 / 5
Re: При наведении картинка меняет цвет
« Ответ #11 : 31.05.2012, 18:07:07 »
Такая схема применима ко всем изображениям вне зависимости от места их расположения. И не только к изображениям.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как при наведении изменить сразу два класса CSS?

Автор Kanfur

Ответов: 3
Просмотров: 1692
Последний ответ 03.11.2020, 16:53:43
от Nikolay89
Как задать цвет SVG?

Автор Forgiving

Ответов: 14
Просмотров: 10475
Последний ответ 11.05.2020, 19:38:20
от fireman
Пауза при наведении на слайдер

Автор Stasweb

Ответов: 12
Просмотров: 1929
Последний ответ 11.12.2019, 10:34:00
от sivers
Как сделать чтоб картинка меняла масштаб вместе с ячейкой в которую вставлена?

Автор Dim

Ответов: 7
Просмотров: 3889
Последний ответ 02.12.2018, 23:54:36
от Dim
Выделение строки таблицы при наведении

Автор March Cat

Ответов: 6
Просмотров: 3001
Последний ответ 27.10.2018, 18:27:16
от effrit