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

crypto92

  • Новичок
  • 2
  • 0 / 0
Список подкатегорий
« : 16.11.2013, 16:22:07 »
Привет всем, я новичек в Joomla и мне нужна помощь)
Смотрите, у меня есть следующая структура материалов:
Категория1
-категория11
--итем111
--итем112
-категория12
--итем121
--итем122
Категория2
...
Не моуг никак сделать так, чтобы у меня было главное меню с пунктами-категориями первого уровня. На странице, соответствующей каждому пункту меню был список всех подкатегорий данной категории. Причем, что важно, список должен быть в виде картинок (картинки прикрепленные к подкатегориям). Конечно в идеале хочется чтобы вид этого списка можно было максимально настраивать, ну там сколько элементов с строке, размер картинки и тд. Ну а дальше на каждой странице категории второго уровня в таком же виде список (лучше grid) материалов (итемов) этой категории.

Сейчас, когда я пытаюсь это делать с помощью модуля k2content (и различных других модулей, типо zenTools) у меня получается максимум выводить на странице список всех материалов данной категории(ну или всех ее дочерних категорий) А Хочется СПИСОК ПОДКАТЕГОРИЙ, ну почему эти модули это не умеют делать(( >:(

Помоигите хотя бы советами, как реализовать подобную структуру сайта?
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
Re: Список подкатегорий
« Ответ #1 : 16.11.2013, 19:27:54 »
   
Код
foreach($this->subCategories as $subCategory)
if ($subCategory->numOfItems > 0)
$html[$subCategory->id] = $subCategory->id;

foreach($this->leading as $item):
$this->item=$item;
if ($html[$this->item->category->id] == $this->item->category->id)
$html[$this->item->category->id] = '<h2>'.$this->item->category->name.'</h2>';
$html[$this->item->category->id] .= $this->loadTemplate('item');
endforeach;
foreach ($html as $h):
echo $h;
endforeach;
сам шучу - сам смеюсь
*

crypto92

  • Новичок
  • 2
  • 0 / 0
Re: Список подкатегорий
« Ответ #2 : 16.11.2013, 23:59:14 »
А готового модуля нет?)
Я конечно так и думал, что надо взять модуль, который делает это для материалов и поменять там пару строк кода, но я думал что так никто не делает. Если честно мне говорили что на Joomla не надо ничего писать самому ли править. Так что я все еще жду готового расширения, хотя и благодарен первому ответу!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Поменять местами вывод подкатегорий в категории

Автор modx1029

Ответов: 2
Просмотров: 1189
Последний ответ 01.10.2019, 11:06:52
от modx1029
Создание новых подкатегорий в K2

Автор randomObject

Ответов: 0
Просмотров: 890
Последний ответ 15.05.2018, 17:41:28
от randomObject
Как создать Список материалов категории в k2?

Автор KOU

Ответов: 0
Просмотров: 1031
Последний ответ 21.12.2017, 03:58:06
от KOU
Вывод зарегистрированных пользователей (авторов), как список материалов k2

Автор Nat_li

Ответов: 0
Просмотров: 925
Последний ответ 14.06.2017, 23:15:00
от Nat_li
Вывод категорий и подкатегорий K2

Автор lgmax

Ответов: 8
Просмотров: 1345
Последний ответ 07.10.2016, 01:17:38
от Septdir