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

Тимур

  • Захожу иногда
  • 52
  • 1 / 0
Впервые сталкиваюсь с такой дурацкой проблемой. Во всех браузерах все отлично, кроме Chrome. Суть проблемы - при заходе на страницы категорий VirtueMart там где много товаров, появляется непонятный отступ внизу страницы. Посмотреть можно здесь http://lasanteh.ru/index.php?option=com_virtuemart&category_id=59&page=shop.browse&Itemid=12&limit=20&limitstart=20. На главной странице и при переходах по статьям - все отлично и никаких отступов снизу нет. Помогите, пожалуйста, решить эту ерунду!
*

rusak

  • Захожу иногда
  • 76
  • 4 / 0
Re: Пустота внизу страницы в Chrome.
« Ответ #1 : 16.03.2011, 23:24:45 »
Попробуй в CSS прописать параметры для тэга <tr>.
*

Тимур

  • Захожу иногда
  • 52
  • 1 / 0
Re: Пустота внизу страницы в Chrome.
« Ответ #2 : 17.03.2011, 01:01:36 »
tr {margin:0px; padding:0px;} не помогает. Таблица уже заканчивается, а снизу непонятно что.
*

rusak

  • Захожу иногда
  • 76
  • 4 / 0
Re: Пустота внизу страницы в Chrome.
« Ответ #3 : 17.03.2011, 11:45:51 »
А если попробовать Height
*

Тимур

  • Захожу иногда
  • 52
  • 1 / 0
Re: Пустота внизу страницы в Chrome.
« Ответ #4 : 17.03.2011, 17:29:37 »
Height:100%; Height:auto; не помогают.
*

rusak

  • Захожу иногда
  • 76
  • 4 / 0
Re: Пустота внизу страницы в Chrome.
« Ответ #5 : 18.03.2011, 09:49:32 »
Попробуй в пикселях указать.
*

Тимур

  • Захожу иногда
  • 52
  • 1 / 0
Re: Пустота внизу страницы в Chrome.
« Ответ #6 : 18.03.2011, 14:58:12 »
Если посмотреть код элемента на странице, то видно, что даже сам тег <body> заканчивается в нужном месте. А нижняя пустота никак не отмечается...
*

Тимур

  • Захожу иногда
  • 52
  • 1 / 0
Re: Пустота внизу страницы в Chrome.
« Ответ #7 : 19.04.2011, 15:54:59 »
Так и не получилось исправить эту гадость. Никто еще не подскажет?
*

dynamit

  • Завсегдатай
  • 1744
  • 265 / 0
  • Winter Is Coming
Re: Пустота внизу страницы в Chrome.
« Ответ #8 : 19.04.2011, 16:32:25 »
для хрома хак есть -
Код
 @media screen and (-webkit-min-device-pixel-ratio:0){здесь стиль}
попробуйте его, если знаете что для хрома прописать, что бы убрать отступ   


« Последнее редактирование: 19.04.2011, 16:43:08 от dynamit »
ТАМ ГДЕ ТЫ НИЧЕГО НЕ МОЖЕШЬ, ТЫ НЕ ДОЛЖЕН НИЧЕГО ХОТЕТЬ
==========================================================
Сайты на Joomla!. Верстка. Консультации.  ||  Яндекс уже не ищет, он уже продает (с)  ||    Создание шаблона для Joomla 2.5
*

nober

  • Захожу иногда
  • 155
  • 1 / 1
Re: Пустота внизу страницы в Chrome.
« Ответ #9 : 25.05.2011, 16:12:55 »
Ребят а у меня проблема со стилистикой на хроме . Кто поможет решить ?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Свой адрес страницы

Автор acamaz

Ответов: 2
Просмотров: 2026
Последний ответ 21.07.2015, 13:56:33
от Gosha5767
Вставить ручками рекламный блок вверх страницы шаблона раздела и категории

Автор annushka

Ответов: 2
Просмотров: 1755
Последний ответ 27.04.2015, 14:56:19
от annushka
Как прописать адрес главной страницы во 2 меню?

Автор p4o1

Ответов: 4
Просмотров: 2720
Последний ответ 25.04.2015, 10:17:54
от p4o1
Как сделать меню вконце страницы ?

Автор p4o1

Ответов: 1
Просмотров: 1765
Последний ответ 08.04.2015, 22:46:50
от vipiusss
Как сделать чтобы позиция debag в шаблоне при маштабировании страницы браузером, была в центре?

Автор kronas

Ответов: 2
Просмотров: 1610
Последний ответ 18.04.2014, 06:38:30
от kronas