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

geral

  • Захожу иногда
  • 147
  • 2 / 1
  • Я мужик!!
Здравствуйте, дорогие товарищи!
Подскажите пожалуйста как сделать чтоб галерея отображалась под основным изображением?
http://www.sibirsk-kedr.ru/index.php/proekty/doma-iz-brusa-new/item/100-dom5
Сейчас она в самом низу.
Спасибо!
*

Serg_

  • Захожу иногда
  • 168
  • 24 / 1
  • Skype: smile_bot (Запорожье)
В файле item.php ищите строки
Код
<!-- Item image gallery -->
  <a name="itemImageGalleryAnchor" id="itemImageGalleryAnchor"></a>
  <div class="itemImageGallery">
  <h3><?php echo JText::_('K2_IMAGE_GALLERY'); ?></h3>
  <?php echo $this->item->gallery; ?>
  </div>
  <?php endif; ?>
Именно они отвечают за вывод галереи.
Сделайте свой шаблон для К2, а в нем перенесите повыше эти строки в файле item.php и всё.
*

geral

  • Захожу иногда
  • 147
  • 2 / 1
  • Я мужик!!
Спасибо вам большое.
Что-то порылся в настройках К2 и не нашел где там выбираются шаблоны.
Я правильно понял, что могу зайти по пути components/com_k2/templates/default и в файле item.php уже производить какие то манипуляции с приведенным кодом ?
Спасибо!
*

geral

  • Захожу иногда
  • 147
  • 2 / 1
  • Я мужик!!
Нет, что-то не то удалил весь код из этого файла, а материал все-равно открывается :(
Где-то не там ищу :(
*

Serg_

  • Захожу иногда
  • 168
  • 24 / 1
  • Skype: smile_bot (Запорожье)
Это называется переопределения в Joomla.
Создаете в своем шаблоне в папке HTML папку com_k2, и в ней default.
Должно получиться templates/имя_папки_вашего_шаблона/html/com_k2/default
Сюда копируете item.php и редактируете его как хотите, при обновлении версии К2 всё останется как вы настроите.
*

geral

  • Захожу иногда
  • 147
  • 2 / 1
  • Я мужик!!
Спасибо, уважаемый!
Все доходчиво объяснил!
Только у меня еще папочка templates перед папкой default, там уже есть файл item.php , с ним и работаю!
Спасибо еще раз!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать категории из выпадающего списка в K2 в алфавитном порядке?

Автор Yonakano

Ответов: 7
Просмотров: 2911
Последний ответ 23.09.2022, 13:03:28
от Yonakano
Как сделать нечто подобное с помощью дополнительных полей?

Автор designerandrey

Ответов: 0
Просмотров: 858
Последний ответ 04.04.2019, 17:20:32
от designerandrey
Как сделать внешний вид как на Яндекс дзен?

Автор klara7

Ответов: 3
Просмотров: 990
Последний ответ 03.12.2018, 22:23:56
от klara7
Есть ли для k2 такая галерея

Автор bybus

Ответов: 1
Просмотров: 850
Последний ответ 24.10.2017, 16:48:58
от Septdir
Как в к2 сделать заголовок материала H1?

Автор sergspb

Ответов: 2
Просмотров: 1877
Последний ответ 08.06.2017, 09:20:50
от sergspb