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

Dynamik

  • Захожу иногда
  • 130
  • 7 / 0
  • Пива бы!
Фото игроков
« : 16.11.2011, 09:24:22 »
JL 1.5.3
Как в настройках сезоной информации о игроке поменять папку с расположением фото, по умолчанию стоит /media/com_joomleague/persons
Приходится все фото в эту папку закачивать?
Еще заметил что в шаблонах отсутствует настройка Persons и поэтому фото игрока всегда в размере 150*150, где поправить?
*

tranceRoller

  • Захожу иногда
  • 452
  • 37 / 0
Re: Фото игроков
« Ответ #1 : 16.11.2011, 10:31:26 »
Цитировать
настройка Persons
В настройке шаблона Players можно менять размер фотографии

Цитировать
Приходится все фото в эту папку закачивать?
В версии 1.52 только туда
*

Dynamik

  • Захожу иногда
  • 130
  • 7 / 0
  • Пива бы!
Re: Фото игроков
« Ответ #2 : 16.11.2011, 11:29:07 »
В настройке шаблона Players можно менять размер фотографии
Persons и Players несколько разные шаблоны, у первого шаблона ссылка постоянная, у второго ссылка привязана к турниру
Например
player/48.php
player/23/48.php или player/24/48.php
А это не очень хорошо, так то в Players я размер поменял.
*

tranceRoller

  • Захожу иногда
  • 452
  • 37 / 0
Re: Фото игроков
« Ответ #3 : 16.11.2011, 13:14:19 »
Сам не тестировал.
Попробуй такое решение:

../componentc/com_joomleague/views/person/tmp/default_pr_info.php
строка 27-30
Код
echo JoomleagueHelper::getPictureThumb($picture, 
$imgTitle,
$this->config['picture_width'],
$this->config['picture_height']);
и подставь вместо $this->config['picture_width'] и $this->config['picture_height'] соответственно ширину и высоту.
*

Dynamik

  • Захожу иногда
  • 130
  • 7 / 0
  • Пива бы!
Re: Фото игроков
« Ответ #4 : 21.12.2011, 20:58:48 »
Попробовал, не получается
Вообщем надо править файл
components/com_joomleague/settings/default/player.xml
« Последнее редактирование: 21.12.2011, 21:31:11 от Dynamik »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Копирование игроков из другого турнира

Автор sopila

Ответов: 5
Просмотров: 4309
Последний ответ 10.03.2019, 01:31:20
от DragonbyKuzya
Неверно считаются матчи в истории игр и в персональной статистике игроков

Автор tornario

Ответов: 6
Просмотров: 2475
Последний ответ 26.11.2015, 12:25:35
от M0sk0W
Joomleague 2 - поиск игроков

Автор born

Ответов: 0
Просмотров: 2060
Последний ответ 11.06.2015, 17:53:29
от born
Изменить вид таблицы игроков

Автор drongo666

Ответов: 8
Просмотров: 2301
Последний ответ 18.05.2015, 15:34:35
от drongo666
Сортировка игроков по результативности

Автор apugachev86

Ответов: 0
Просмотров: 1924
Последний ответ 28.01.2015, 20:57:48
от apugachev86