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

merle

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Применяется не к материалу, а к его категории (?)

не заметил изменений
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Чекбоксы категория и контент предназначены для разрешения вывода поля на соответствующих страницах.
*

merle

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Чекбоксы категория и контент предназначены для разрешения вывода поля на соответствующих страницах.

это значит, при выводе блога материалов категории, или при выводе единичного материала, так?
*

merle

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
*

Sonate

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Аркадий, добрый день!
Спасибо огромное за такой полезный и удобный плагин. Для моих задач - просто идеальное решение! Я перелопатила кучу CCK, и только ваше творение должно меня в идеале спасти... если все будет работать.
Заранее скажу, что я обычный пользователь, не имеющий навыков программирования, однако сайт у меня непростой и приходится все делать самой и во всем пытаться разобраться, спросить не у кого. Но иногда бьешься головой об стену, и ничего не получается. Так и в случае с вашим плагином. Перечитала всю ветку этого форума, все вроде бы делаю так, как написано, но не работает :( Помогите, пожалуйста, разобраться!

Спойлер
[свернуть]

Joomla 3.4.1

Ощущение, что дело не в плагине, а в каких-то настройках самой Joomla (фильтрация текста отключена, у редактора JCE разрешены скрипты и PHP, при этом в той же таблице скрипт работает, а PHP - нет, даже на простом коде ((

Или я все-таки где-то ошиблась в коде? Или в настройках?
« Последнее редактирование: 16.04.2015, 12:35:16 от Sonate »
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Что конкретно не работает? Ничего не понял из предыдущего поста.
*

Sonate

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Видимо, сумбурно написала... И только сейчас заметила, что код не тот подставила.

Вот код этого материала:

Спойлер
[свернуть]

Я пытаюсь в таблице на сайте отображать значение в ячейках не напрямую вводя их в редакторе материалов, а забивая в доп. полях. Соответственно, не работает подстановка этих значений во фронтэнде, там на последнем скриншоте видно, что вместо значений полей выводится часть php-кода как текст.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Вы демонстрируете кусок шаблона или код материала из редактора?
*

Sonate

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Код материала из редактора
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
там так писать не надо, вывод полей MiniCCK надо писать в макеты/шаблоны. В редакторе можно писать только чистый HTML.
*

Sonate

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Понятно... К сожалению, вносить подобные правки в шаблон мне не под силу :( Думала, что можно просто код в текст вставить...
Спасибо большое за ответ!
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Сделал компонент импорта контента и дополнительных полей MiniCCK http://argens.ru/zagruzki/minicck/minicck-import-component. Желающих прошу тестировать, отписываться об ошибках. Образец файла для импорта находится в архиве компонента.
*

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

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
Сделал компонент импорта контента и дополнительных полей MiniCCK http://argens.ru/zagruzki/minicck/minicck-import-component. Желающих прошу тестировать, отписываться об ошибках. Образец файла для импорта находится в архиве компонента.
Ну слов нет - красавчик!
Как раз думал об этом на днях...
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Выпустил новый релиз плагина MiniCCK. Изменен модуль фильтра, добавлены и модифицированы поля плагина, добавлен компонент импорта содержимого в com_content и дополнительные поля MiniCCK. Официальная новость http://joomlaportal.ru/news/extensions/plugins/2538-minicck-24
Скачать http://argens.ru/zagruzki/minicck
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Странно, мне нормальную страницу отдает.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Поначалу тоже 404 было, потом ctrl+f5 сделал - и все ок
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Так, обратил внимание, что меня редиректит на http://argens.ru/en/zagruzki/minicck. Я видимо выбрал английский и естественно он запомнился. Выбрал русский, 404 больше нет.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Странно редиректит, у меня связь с английским настроена и если на странице загрузки поменять язык, то переключает правильно и туда и сюда.
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Аркадий, а вы с полгодика назад обещали в неопределенном будущем переделать плагин в компонент, чтобы в настройки попроще было заходить и добавить обязательные поля. Сделаете?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Да не обещал я такого, и в мыслях небыло. Компонентов таких пруд пруди.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Что-то не увидел там своего обещания сделать компонент из плагина, у меня со зрением плохо или его там действительно нет? :)
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Речь изначально шла не о переделке плагина в компонент, а о кнопке или ссылке из админки для быстрого вызова настроек плагина, так как через менеджер плагинов это очень неудобно. Переделка плагина в компонент автоматически решает эту проблему. Вы знаете какой то более лёгкий способ для быстрого вызова настроек?
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Написала, стерла, пишу еще раз :)

Заходите в менеджер плагинов, смотрите какой id у плагина.
Переходите в менеджер модулей, выбираете вместо "Сайт" - "Панель управления"
Жмякаете "Создать", выбираете обычный модуль HTML-код
В поле редактора вставляете код:
Код: php
<form action="ВАШСАЙТ/administrator/index.php?option=com_plugins&view=plugins" method="post">
<input type="hidden" name="cid[]" value="ID ВАШЕГО ПЛАГИНА">
<input type="hidden" name="task" value="plugin.edit">
<input type="submit" value="Настройки MiniCCK">
</form>
Выбираете позицию "bottom", сохраняете
Получается так: http://prntscr.com/71dlue на всех страницах админки
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Юля, спасибо, работает! )
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Оказалось куда проще, чем писать компонент :)
*

Hol1killer

  • Захожу иногда
  • 215
  • 3 / 0
Аркадий добрый день, нашел похоже ошибку, при фильтрации по выпадающему списку ( select ) в случаи одного значения возникает 1064 ошибка, строится пустой запрос, точнее запрос с пустым WHERE() и он на это жалуется.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Cделайте на http://argens.ru/tekhnicheskaya-podderzhka (доступн после авторизации) тикет в котором укажите доступ в админку и ftp вашего сайта. Посмотрю.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Умный поиск Joomla! 4.3.4 Stable не ищет в содержимом SP Page Builder 5.0.8

Автор dmitrypro

Ответов: 4
Просмотров: 2790
Последний ответ 17.10.2023, 13:59:18
от dmitrypro
Поиск аналогичного конструктора контента

Автор TRIGUN

Ответов: 0
Просмотров: 1525
Последний ответ 24.07.2017, 02:12:13
от TRIGUN
MiniCCK - вывод полей в модулях

Автор Nikolay Blinov

Ответов: 1
Просмотров: 1827
Последний ответ 28.06.2016, 02:31:25
от Nikolay Blinov
Как сделать каталог в Joomla?

Автор tao2en

Ответов: 8
Просмотров: 3920
Последний ответ 11.03.2016, 11:14:22
от FitMe
Ребят кто сможет сделать модуль для Joomla 3 с функционалом описанным ниже

Автор foxkirov

Ответов: 4
Просмотров: 1851
Последний ответ 14.01.2016, 21:39:41
от foxkirov