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

bio_krik

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
На Joomla перешел не так давно, поэтому не во все "въехал". Сейчас апогеем и злобой дня стала проблема изменения внешнего вида материалов в K2, т.е. надо поменять местами некоторые блоки, например текстовый блок поместить вниз, а доп. параметры задрать вверх, как собственно и галерею изображений поднять вверх... В К2 материалы/ K2 параметры - менять можно только отображение некоторых параметров (заголовка, дата создание и т.д.), но изменить местоположение блоков нельзя... Наверняка это можно сделать в каком либо файле .CSS. Попытался найти здесь - templates\мой шаблон\css, но что то не вышло, и по-моему тут \components\com_k2\css тоже нельзя поменять (хотя могу ошибаться). Подскажите какой файл надо ковырнуть или в какие настройки залезть?
скрин ниже

сайт
http://terracesea.com/
*

dmtn

  • Захожу иногда
  • 381
  • 25 / 2
administrator/components    ::)
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
сам шучу - сам смеюсь
*

bio_krik

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
administrator/components    ::)
 а можно поконкретней? )) Там же куча папок! ...
*

dmtn

  • Захожу иногда
  • 381
  • 25 / 2
  а можно поконкретней? )) Там же куча папок! ...
чуть выше над вашим сообщением jurassik ссылочку разместил, там все хорошо расписано
*

bio_krik

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
jurassik, dmtn  - огромное спасибо! Я чувствую на правильном пути))
http://joomlaforum.ru/index.php/topic,154143.msg835302.html#msg835302
сделал как написано в ссылке, перенес файлы в /templates/шаблон_Joomla/html/com_k2/templates, переименовал папку default в моем случае в RealEstate. В общем дошел до стадии "Вот теперь вы можете измываться над выводом материалов редактируя файлы шаблонов"...  Подскажите пожалуйста ламеру какой файл надо редактировать чтобы поменять местами блоки, как в скриншоте?? В свойства категории К2, это сделать нельзя насколько я понял...

в папке default (в моем случае в RealEstate) лежат 10 файлов:
category.php
category_item.php
category_item_links.php
item.php
item_comments_form.php
itemform.php
latest.php
latest_item.php
tag.php
user.php


какой из этих файлов решит мою проблему? )) Заранее благодарю за ответ
« Последнее редактирование: 14.03.2014, 12:27:58 от bio_krik »
*

dmtn

  • Захожу иногда
  • 381
  • 25 / 2
с к2 особо не разбирался, но что-то мне подсказывает, что тут дело не в файле - вы хотите поменять местами часть материала статьи и дополнительные поля, т.е. доп поля вставить в середину материала - между картинкой и текстом, а так разве делают, может что-то подумать насчет основного материала и доп полей в настройках?
*

bio_krik

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
с к2 особо не разбирался, но что-то мне подсказывает, что тут дело не в файле - вы хотите поменять местами часть материала статьи и дополнительные поля, т.е. доп поля вставить в середину материала - между картинкой и текстом, а так разве делают, может что-то подумать насчет основного материала и доп полей в настройках?
мне отдельно вырывать из дополнительной информации какие то определенные поля не надо, надо тупо поменять местами текстовый блок (описание материала) с блоком доп.информации и галерею изображений перенести в под картинку основного изображения... может этот файл item.php надо ковырять? Правда опять же в php я разбираюсь еще хуже чем в CSS  :)
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
может этот файл item.php надо ковырять?
+
сам шучу - сам смеюсь
*

dmtn

  • Захожу иногда
  • 381
  • 25 / 2
сходите сюда
http://joomlaforum.ru/index.php/topic,152905.0.html
там все расписано
*

bio_krik

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
вСЕм спасибо, отдельно jurassik!
Действительно, все дело в item.php ! ::) :D
*

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
jurassik, dmtn  - огромное спасибо! Я чувствую на правильном пути)) сделал как написано в ссылке, перенес файлы в /templates/шаблон_Joomla/html/com_k2/templates, переименовал папку default в моем случае в RealEstate. В общем дошел до стадии "Вот теперь вы можете измываться над выводом материалов редактируя файлы шаблонов"...  Подскажите пожалуйста ламеру какой файл надо редактировать чтобы поменять местами блоки, как в скриншоте?? В свойства категории К2, это сделать нельзя насколько я понял...

в папке default (в моем случае в RealEstate) лежат 10 файлов:
category.php
category_item.php
category_item_links.php
item.php
item_comments_form.php
itemform.php
latest.php
latest_item.php
tag.php
user.php


какой из этих файлов решит мою проблему? )) Заранее благодарю за ответ
вСЕм спасибо, отдельно jurassik!
Действительно, все дело в item.php ! ::) :D
Ну а как же  ;D одним CSS тут мало бы что у вас наворотить получилось =)
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенос материалов из Joomla3 + K2 в Joomla4

Автор Magnum79

Ответов: 0
Просмотров: 1474
Последний ответ 24.05.2024, 21:49:14
от Magnum79
Как добавить свой класс для страниц вывода материалов по тегу k2?

Автор Slava77

Ответов: 0
Просмотров: 4084
Последний ответ 16.02.2023, 23:29:34
от Slava77
Как на странице автора K2 изменить title и description?

Автор Slava77

Ответов: 4
Просмотров: 2839
Последний ответ 26.12.2022, 21:11:51
от Slava77
Наполняя категорию K2 копированием материалов, пропадает навигация в статьях

Автор Slava77

Ответов: 4
Просмотров: 3028
Последний ответ 24.12.2021, 22:30:56
от Slava77
Перестала работать опция оценки материалов/рейтинг в компоненте K2

Автор Yonakano

Ответов: 4
Просмотров: 1766
Последний ответ 07.02.2021, 00:30:57
от Yonakano