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

lamaka

  • Захожу иногда
  • 74
  • 5 / 0
  • МАЗАФАКЕР
Мир всем местным! *DRINK*
Отличный компонент, но возникла проблема с дизайном страницы публикации. Если бы я сам добавлял, то закрыл бы глаза на то, что она открывается java скриптом и имеет уж больно неподходящий дизайн. А пользователей мне кажется это будет пугать, особенно женский пол. Да и самому было бы куда приятнее вписать эту страничку в сайт. Кто нибудь разбирался с этим?

PS И не в тему (сори): Рад, что снова вернулся  yes! на форум, полтора года тут не появлялся.  >:(
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: Дизайн страницы публикации
« Ответ #1 : 07.10.2011, 09:06:47 »
Да, будет пугать девушек и женщин. Да, неудобно. Нет, никто не разобрался.

А шаблон form.php находится в папке: /components/com_k2/views/item/tmpl/
« Последнее редактирование: 07.10.2011, 09:31:37 от staticlight »
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Re: Дизайн страницы публикации
« Ответ #2 : 07.10.2011, 13:53:32 »
... что она открывается java скриптом ...
... вписать эту страничку в сайт ...

В components\com_k2\controllers\item.php -  в функции edit() закомментируйте JRequest::setVar('tmpl', 'component');


В components\com_k2\templates\default\category.php
Код
<?php if(isset($this->addLink)): ?>
<!-- Item add link -->
<span class="catItemAddLink">
<a class="modal" rel="{handler:'iframe',size:{x:990,y:650}}" href="<?php echo $this->addLink; ?>">
...

Приведите к такому виду:

Код
<?php if(isset($this->addLink)): ?>
<?php $this->addLink = JRoute::_('index.php?option=com_k2&view=item&task=add');?>
<!-- Item add link -->
<span class="catItemAddLink">
<a href="<?php echo $this->addLink; ?>">
...

Отредактируйте по своему вкусу шаблон формы (в К2 2.5 это itemform.php)
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: Дизайн страницы публикации
« Ответ #3 : 08.10.2011, 17:48:27 »
Круто =)
Ща на новом сайте потестирую =)

Надо это в FAQ добавить
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

karencho

  • Захожу иногда
  • 161
  • 0 / 1
Re: Дизайн страницы публикации
« Ответ #4 : 15.10.2011, 16:20:23 »
а где он шаблон и как его изменить?
*

CTPZ

  • Захожу иногда
  • 305
  • 24 / 5
Re: Дизайн страницы публикации
« Ответ #5 : 15.10.2011, 16:21:32 »
components\com_k2\templates\default\
*

karencho

  • Захожу иногда
  • 161
  • 0 / 1
Re: Дизайн страницы публикации
« Ответ #6 : 15.10.2011, 16:24:19 »
какои файл за внешний вид?или они все?
*

CTPZ

  • Захожу иногда
  • 305
  • 24 / 5
Re: Дизайн страницы публикации
« Ответ #7 : 15.10.2011, 16:45:44 »
category_item.php и css-файл шаблона тоже надо будет отредактировать.
*

karencho

  • Захожу иногда
  • 161
  • 0 / 1
Re: Дизайн страницы публикации
« Ответ #8 : 15.10.2011, 18:55:03 »
я не могу понять как их переместить,копирую код вставляю в то место где хочу его видет но не получаетса,можете подсказать почему?
*

karencho

  • Захожу иногда
  • 161
  • 0 / 1
Re: Дизайн страницы публикации
« Ответ #9 : 16.10.2011, 02:06:38 »
люди кто работал с шаблоном lookat ? почему то не выводитса сылка "подробнее" можете помочь?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Автоматическая дата снятия с публикации материала

Автор kozhenevsky

Ответов: 10
Просмотров: 4307
Последний ответ 17.11.2023, 08:08:49
от Vastriet
Разные страницы с результатами поиска на одном сайте com_k2

Автор NIKOLY

Ответов: 0
Просмотров: 2148
Последний ответ 22.08.2023, 15:44:05
от NIKOLY
K2 свой title для каждой страницы

Автор anna9494

Ответов: 19
Просмотров: 3864
Последний ответ 27.06.2020, 15:16:59
от TYMON
Показать все страницы категории.

Автор Sniperwolf5125

Ответов: 5
Просмотров: 2141
Последний ответ 11.11.2018, 22:44:07
от lexxbry
Режим каталога при создании страницы тега в меню.

Автор recived

Ответов: 0
Просмотров: 1135
Последний ответ 24.03.2018, 09:41:33
от recived