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

Radist

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Шаблон блога раздела
« : 29.06.2009, 13:46:20 »
Всем доброго дня.
Ситуация: есть шаблон блога раздела, все статьи во всю ширину.
Проблема: не отображается заголовок одной из категорий.
Заранее спасибо
*

Radist

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: Шаблон блога раздела
« Ответ #1 : 30.06.2009, 13:20:59 »
Или хотя бы какой компонент подскажите
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Шаблон блога раздела
« Ответ #2 : 30.06.2009, 13:21:45 »
Не совсем я понял суть проблемы. Если можно дайте ссылку.
*

Radist

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: Шаблон блога раздела
« Ответ #3 : 30.06.2009, 13:25:22 »
Сайт пока на локалхосте пока. Проблема такая: есть блог раздела, в нем нужно отобразить названия категорий (вместе с материалами, естественно). Примерно так:

Раздел

Категория 1
-Материал 1
-Материал 2

Категория 2
-Материал 1
-Материал 2

Трабл в том, что названия категорий не отображаются
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Шаблон блога раздела
« Ответ #4 : 30.06.2009, 13:30:45 »
Это не трабла, а так уж устроена Joomla! В шаблоне блога раздела отображауются только материалы из различных категорий, а названия категорий выводятся только для каждого материала отдельно (в качестве доп инфо).

Такого вывода как указано:

Категория 1
-Материал 1
-Материал 2

по умолчанию нет. Может кто подскажет компонент для вывода в таком формате.
*

Radist

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: Шаблон блога раздела
« Ответ #5 : 01.07.2009, 10:27:40 »
Хорошо. Тогда второй вопрос: кто может сказать, как в стандартном шаблоне блога раздела программно получить имя категории. Раз уж Joomla не дает такой возможности, придется поработать руками
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Шаблон блога раздела
« Ответ #6 : 01.07.2009, 10:31:11 »
Имя категории там уже есть автоматом. Получать не надо :)

Вот код, который за это отвечает:

Код: php
		<?php if ($this->item->params->get('show_category') && $this->item->catid) : ?>
<span>
<?php if ($this->item->params->get('link_category')) : ?>
<?php echo '<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute($this->item->catslug, $this->item->sectionid)).'">'; ?>
<?php endif; ?>
<?php echo $this->item->category; ?>
<?php if ($this->item->params->get('link_category')) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
</span>
<?php endif; ?>
*

Radist

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: Шаблон блога раздела
« Ответ #7 : 01.07.2009, 10:37:39 »
Спасибо! *по пятки ушел в код*
*

Radist

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: Шаблон блога раздела
« Ответ #8 : 01.07.2009, 14:00:41 »
Ужас! Этот файл берет только один материал, и никак иначе!!!
DeadLine
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Заголовок страницы вида Имя материала / имя категории / имя раздела /

Автор rubasket

Ответов: 2
Просмотров: 19287
Последний ответ 24.03.2017, 01:13:50
от mbgr
Невозможно назначить шаблон по умолчанию

Автор Jons$

Ответов: 3
Просмотров: 3914
Последний ответ 16.04.2015, 06:57:06
от Petrofrk
Как отключить вывод материалов в виде блога?

Автор heavenlook

Ответов: 9
Просмотров: 1890
Последний ответ 25.12.2014, 04:28:06
от heavenlook
Шаблон описания - как осуществить?

Автор OlgaK

Ответов: 1
Просмотров: 1246
Последний ответ 14.08.2014, 10:52:15
от OmniWizard
Отображение блога категорий материалов в одну колонку

Автор leny

Ответов: 18
Просмотров: 6397
Последний ответ 20.07.2014, 18:24:47
от Скучный мэн