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

anzorm

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Joomla - 2.5.6, K2 - v2.6.1
Вывод на главную настроен так: Меню - К2 - Новые материалы от одного или нескольких пользователей или категорий. Источник контента  - категория Новости.

категория Новости, в ней подкатегории 1,2,3 и т.д.
В настройках категории – режим каталога (нет). Избранные материалы (скрыть)

Всё материалы выводятся отлично, вот только с избранными материалами засада - не отключаются. Я их вывожу отдельно модулем, поэтому в списке на главной странице они мне не нужны. Можно ли другими способами отключить вывод избранных на главную?

Upd: Обновление на K2 - 2.6.2 - ничего не дало.
« Последнее редактирование: 24.01.2013, 16:12:11 от anzorm »
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Избранные материалы на главной
« Ответ #1 : 25.01.2013, 15:08:25 »
А, может, они выводятся, потому что в параметрах подкатегорий не стоит "Избранные материалы (скрыть)" ? )
Материалы-то не из новостей, а из подкатегорий с отдельными настройками, как я понимаю.
Возможно, будет интересно: Интеграция с Ozon
*

anzorm

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: Избранные материалы на главной
« Ответ #2 : 28.01.2013, 08:48:39 »
Попробовал такой вариант. На главной всё равно выводятся, а вот в меню по категориям K2 - там не выводит. ^-^ Кстати и модуль K2 Tools в режиме календарь материалов тоже тогда не показывает избранные.
Мне бы поправить шаблон K2 вывода на главную, например, если избранная новость, то не показывать.
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Избранные материалы на главной
« Ответ #3 : 28.01.2013, 14:27:33 »
А что с этим сложности?
И на каком всё-таки типе пункта меню Вы остановились?
Возможно, будет интересно: Интеграция с Ozon
*

anzorm

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: Избранные материалы на главной
« Ответ #4 : 28.01.2013, 14:33:13 »
Дело в том, что мне нужны оба варианта вывода. На главную я вывожу новые материалы из подкатегорий категории "Новости" , а рядом меню - выводит список подкатегорий категории "Новости".
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Избранные материалы на главной
« Ответ #5 : 28.01.2013, 14:38:07 »
Ну если меню рядом, значит оно как я понимаю в модуле, и не является пунктом меню.
А на главной всё же категория или страница пользователя? Или новые материалы пользователя/категории?
Возможно, будет интересно: Интеграция с Ozon
*

anzorm

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: Избранные материалы на главной
« Ответ #6 : 28.01.2013, 14:47:15 »
Всё меню идёт модулем - по пунктам: Главная, Новости и т.д.
Пункт меню - Главная настроена так:
Вывод на главную настроен так: Меню - К2 - Новые материалы от одного или нескольких пользователей или категорий. Источник контента  - категория Новости. категория Новости, в ней подкатегории 1,2,3 и т.д.
В настройках категории – режим каталога (нет). Избранные материалы (скрыть)
Пункт меню "Новости" - настроен, как K2 - категории и выбрана категория "Новости". Как-то так.)
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Избранные материалы на главной
« Ответ #7 : 28.01.2013, 21:42:28 »
В таком случае создаём шаблон для данного типа вывода. И вносим в него соответствующие правки.

В /templates/ваш-шаблон/html/com_k2/templates/ создаём папку, к примеру, test и копируем туда дефолтовский latest_item.php
Открываем его. Вносим изменения:

1: перед <!-- Start K2 Item Layout --> вставляем условие:
Код
<?php if($this->item->featured !== '1'): ?>

2: после <!-- End K2 Item Layout --> закрываем if:
Код
<?php endif; ?>

Не забываем сохранить изменения файла на сервере. И выбрать данный шаблон (в этом примере test) в настройках пункта меню "Основные параметры" и применить.

Теперь неизбранные материалы не выводятся  ;)
Возможно, будет интересно: Интеграция с Ozon
*

anzorm

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: Избранные материалы на главной
« Ответ #8 : 29.01.2013, 08:53:22 »
Огромное, человеческое спасибо. :D Всё получилось!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как предпросматривать материалы в K2?

Автор Kijv

Ответов: 1
Просмотров: 996
Последний ответ 06.03.2021, 17:21:25
от v42bis
Материалы К2 долго грузятся

Автор Василий Ветров

Ответов: 9
Просмотров: 1365
Последний ответ 02.01.2020, 10:29:59
от draff
Как вывести последние материалы на главную в 4 колонки?

Автор sergspb

Ответов: 4
Просмотров: 1075
Последний ответ 18.02.2019, 15:44:21
от Den JW
К2 материалы

Автор backovadim

Ответов: 2
Просмотров: 1118
Последний ответ 25.04.2018, 07:13:58
от backovadim
Подписка на материалы K2

Автор kolhoz

Ответов: 1
Просмотров: 1115
Последний ответ 12.02.2018, 23:31:27
от Театрал