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

andreyse

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Плей-офф в 1.5.5-amber (RC2)
« : 21.03.2012, 04:21:32 »
Столкнулся с проблемой. Создал турнир (хоккей), где команды сыграли по круговой системе. Далее необходимо создать плей-офф. Присвоил своему турниру статус "турнир на вылет".
Захожу в пункт меню - "дерево". Создаю стартовую сетку турнира на вылет: группирую пары команд. Далее они должны сыграть серии игр и только победитель в серии игр попадает в следующий круг...
Куда добавлять матчи - не пойму и как научить joomleague не переводить команду в следующий круг после одного матча - не знаю. Кто знает помогите.
*

tranceRoller

  • Захожу иногда
  • 452
  • 37 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #1 : 21.03.2012, 07:50:22 »
Сформулируйте вопрос конкретнее.
Может ли в кубке JL на основании нескольких матчей команда переходить по дереву? Ответ: да. Была ситуация, когда вводил данные прошедшего турнира. Там на основании 2-х матчей переходили дальше.
*

andreyse

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #2 : 21.03.2012, 15:09:54 »
Сформулируйте вопрос конкретнее.
Может ли в кубке JL на основании нескольких матчей команда переходить по дереву? Ответ: да. Была ситуация, когда вводил данные прошедшего турнира. Там на основании 2-х матчей переходили дальше.
Мне нужно к каждой паре команд в кубке присоединить несколько матчей (результатов) и чтобы в следующий круг прошла лучшая команда по результатам серии. Вопрос что делать, куда жать...
*

tranceRoller

  • Захожу иногда
  • 452
  • 37 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #3 : 21.03.2012, 15:48:03 »
1) Создали дерево
2) Создали матчи
3) Присвоили матчи этапу
->
4) Обновили/применили изменения для этапа
*

andreyse

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #4 : 21.03.2012, 17:19:38 »
Я так понял турнир с двумя этапами в одном проекте сделать нельзя? То есть сначал команды играли по круговой системе, а после 8 лучших вошли в плей-офф. Так не выйдет?
*

tranceRoller

  • Захожу иногда
  • 452
  • 37 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #5 : 21.03.2012, 17:40:09 »
Можно, но пока это реализовано коряво.
Делаем лигу с дивизионами, тогда есть возможность создавать дерево. Из плюсов такой схемы: общая статистика голов и т.д. Из минусов: турнирную таблицу не посмотришь.
Второй вариант: делать 2 турнира для каждого этапа. Плюсы: таблицы в отличном виде (листать по турам можно и т.д.). Минусы: разбита статистика голов и прочего.
В будущем обещают сделать расширение для объединения турниров. Тогда, надеюсь, второй вариант будет полноценным.
*

andreyse

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #6 : 21.03.2012, 17:55:04 »
Понял в чем у меня косяк. Когда привязываешь тур к определенному раунду, в турах создаешь тур, но он не виден... Выходишь из Джомлы, заходишь обратно - все в порядке. Но это мелочи.

У меня 8 команд. Я создаю в одном туре все игры первого этапа (до победной серии до трех побед). Специально по два матча для каждой пары ввел результаты, а в одном матче - нет. Но таблица все равно формируется... Как вы матчи разносите, когда необходимы серии? В один тур по одному матчу каждой пары или?

*

andreyse

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #7 : 21.03.2012, 17:57:34 »
Притом когда все матчи в одном туре JL судит все по первому матчу.
*

tranceRoller

  • Захожу иногда
  • 452
  • 37 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #8 : 21.03.2012, 19:29:52 »
Цитировать
Но таблица все равно формируется...
А нужна ли в этом случае таблица?
Она, не привязана к дереву.
Цитировать
Как вы матчи разносите, когда необходимы серии?
Был единичный случай когда уже все матчи сыграли, а я просто ввёл информацию.
Цитировать
В один тур по одному матчу каждой пары или?
Матчи были разных туров
*

andreyse

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #9 : 21.03.2012, 19:51:37 »
А нужна ли в этом случае таблица?
Она, не привязана к дереву. Был единичный случай когда уже все матчи сыграли, а я просто ввёл информацию. Матчи были разных туров
опечатался. результат в следующий раунд дерева добавляется.

А нужна ли в этом случае таблица?
Она, не привязана к дереву. Был единичный случай когда уже все матчи сыграли, а я просто ввёл информацию. Матчи были разных туров
Количество матчей в серии никогда не угадаешь, а после сохранения первого результата кнопки становятся неактивными и еще один тур привязать нельзя к этому раунду. Или как-то можно активировать кнопки привязки туров к раунду плей-офф?
« Последнее редактирование: 21.03.2012, 19:55:26 от andreyse »
*

tranceRoller

  • Захожу иногда
  • 452
  • 37 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #10 : 21.03.2012, 22:32:59 »
Цитировать
Или как-то можно активировать кнопки привязки туров к раунду плей-офф?
Похоже, что сейчас это так просто не сделать.
Нашёл метод как можно активировать кнопки, но это только через изменение таблицы базы данных. Если интересен метод - опишу.
*

andreyse

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #11 : 22.03.2012, 04:02:36 »
Нашёл метод как можно активировать кнопки, но это только через изменение таблицы базы данных. Если интересен метод - опишу.
Опиши, мне будет полезно, да и не только мне.
*

tranceRoller

  • Захожу иногда
  • 452
  • 37 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #12 : 22.03.2012, 12:09:36 »
Цитировать
Количество матчей в серии никогда не угадаешь, а после сохранения первого результата кнопки становятся неактивными и еще один тур привязать нельзя к этому раунду.
Есть способ как с это поправить.
Активировать кнопку присвоения матча меняя запись в базе данных:

[один матч уже присвоен и элемент закрыт]
1) Надо знать ID дерева и ID команд
2) База данных -> таблица jos_joomleague_treeto_node
3) Ищем записи с ID нужного дерева
4) Находим запись элемента с матчем нашей команды (ищем запись с ID команды). Нужны записи с is_leaf=0. Вначале такая запись будет одна. Как только команда будет продвигаться по дереву их будет несколько. Ориентироваться просто: более раннему этапу соответствует запись с большим id (или node).
5) Итак, строка отвечающая за нужный элемент найдена. Теперь правим её. Меняем team_id на 0.
6) Элемент открыт. Можно добавлять матч.
*

andreyse

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Плей-офф в 1.5.5-amber (RC2)
« Ответ #13 : 22.03.2012, 16:14:59 »
Спасибо, попробую.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с ассоциацией матчей плей-офф

Автор Dezmond

Ответов: 3
Просмотров: 2304
Последний ответ 20.03.2015, 01:39:32
от tranceRoller
подскажите есть ли модуль отобращающий дерево плей-офф

Автор Gugolovski

Ответов: 1
Просмотров: 1891
Последний ответ 20.06.2012, 11:47:51
от tranceRoller
как в рамках одного турнира объединить групповой этап и сетку плей-офф?

Автор Gugolovski

Ответов: 1
Просмотров: 1465
Последний ответ 04.06.2012, 11:07:22
от tranceRoller
Новая версия: 1.5.5-amber (RC2)

Автор tranceRoller

Ответов: 14
Просмотров: 2829
Последний ответ 25.03.2012, 15:20:08
от Геныч
Групповой турнир с плей офф (joomleague 1.5)

Автор chernblx

Ответов: 5
Просмотров: 2490
Последний ответ 22.02.2011, 16:10:34
от chernblx