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

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Значит поставила локально. Встало без проблем на J3.1.5. При нажатии на кнопку "добавить поле" не сразу дошло, что оно добавилось внизу :) ну да ладно. потом попробовала удалить поле - и вот тут они никак не хотели удаляться, наверно с пятой попытки получись их удалить (визуально), никаких ошибок в консоли не было - это только в первый раз, со второго раза уже все нормально и добавляется и удаляется. Мне нужно 2 типа поля - строка и изображение, со строкой проблем нет. С изображением в материале по кнопке "выбрать" - изображение не выбирается, то есть я закрыла окно медиа-менеджера и вставила путь до картинки руками в это поле. Все сохранилось без проблем, на фронте выводиться....счастье :)
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
А медиаменеджер что показывает?
*

Arkadiy

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

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Скачала заново, поставила поверх.
Вот что в менеджере при попытке выбрать и вставить фото
Спойлер
[свернуть]

Uncaught TypeError: Cannot read property 'value' of null

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


В самом плагине теперь прокручивает до нового поля, но с ошибкой
Спойлер
[свернуть]
« Последнее редактирование: 30.08.2013, 21:54:46 от ELLE »
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
очень странно, я поставил плагин на свой демосайт, все нормально вставляет, никаких ошибок не производит. Дай доступ в админку и ftp, посмотрю.
А ошибка в скрипте фигня, раз на работу не виляет.
« Последнее редактирование: 31.08.2013, 07:01:19 от Arkadiy »
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
очень странно, я поставил плагин на свой демосайт, все нормально вставляет, никаких ошибок не производит. Дай доступ в админку и ftp, посмотрю.
доступ не получится дать - на локалке пока поставила.
а сегодня дошла до того, что такая проблема только если это поле типа изображение - названо по-русски
переименовала поле и сменила заголовок - проблема отпала, теперь картинки в это поле вставляются на ура из медиа-менеджера!

То есть в плагине обязательно нужно указывать "Название поля" латиницей, ну по крайней мере для поля типа "Изображение"
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
А я написал это в инструкции, а ты не прочитала :)
Значит глюков нет, пойду на JED оформляться.
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
А я написал это в инструкции, а ты не прочитала :)
Да нет конечно :) Куда там, я как узнала - сразу побежала ставить :)
Неделю блин мучилась - так не хотелось ставить отдельные компоненты ради 2х этих полей несчастных.
Спасибо за труды! :)
« Последнее редактирование: 31.08.2013, 16:45:29 от ELLE »
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
То есть в плагине обязательно нужно указывать "Название поля" латиницей, ну по крайней мере для поля типа "Изображение"
Arkadiy, я бы на твоем месте предусмотрел этом момент. Инструкции народ не читает (не в обиду ELLE), поэтому потом задолбают вопросами. Может лучше использовать JFilterOutput::stringURLSafe() или еще как-то...
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Да не обязательно так заморачиваться, достаточно будет и подсказку просто сделать
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Arkadiy, я бы на твоем месте предусмотрел этом момент. Инструкции народ не читает (не в обиду ELLE), поэтому потом задолбают вопросами. Может лучше использовать JFilterOutput::stringURLSafe() или еще как-то...
Я скриптом вписываю название нового поля field_n (n - номер поля), думаю понятно что так надо и оставить. Когда Юля блудила этой фичи еще небыло, для нее и сделал :)
А JFilterOutput::stringURLSafe()  несколько напряжно, я на сохранение получаю многомерный массив и json_decode в одну ячейку. Минимум движений. Можно, даже лучше, JavaScript валидацию приделать.
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Я скриптом вписываю название нового поля field_n (n - номер поля), думаю понятно что так надо и оставить. Когда Юля блудила этой фичи еще небыло, для нее и сделал :)
да, я кстати заметила :) только это мне нисколько не помешало даже во второй раз заменить то, что по дефолту field_n на своё :)
но думаю те, кто будут ставить в первый раз поймут тонкий намек, увидев уже готовое field_n.
как вариант его можно не только заполнять, а еще и блокировать поле, чтоб исправить уже нельзя было
но я бы просто подсказку сделала и все :)
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Такс, а теги вырезает и в строке, и в большом текстовом поле...
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Такая штука есть, надо что-то с фильтрами делать.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
https://github.com/Arkadiy-Sedelnikov/MiniCCK
В правой колонке внизу есть кнопка скачать, скачивай, заменяй файлы. В текстовом поле разрешил теги.
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Пока не до того, у меня релиз систем, настроить только надо, но руки не доходят. Может к след. релизу.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Ну там на 10 минут работ..
Зато красиво будет..
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Я понимаю, но пока всеравно следующего релиза делать не буду. JED разродится, тогда и можно будет поэкспериментировать.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
На гитхабе доступна свежая версия плагина. Дистрибутив пока не делал т.к. не тестировано.
Путевой лист:
- Приделал сервер обновлений, теоретически настроил, должно работать, но не пробовал.
- Сделал типы контента. Теперь на плагине можно делать несколько наборов полей, прикрепленных к разным типам. Шаблон вывода полей так-же можно выбрать в типе.
- Имена типов и дополнительных полей автоматически транслитерируются после ввода во избежание ошибок с кириллическими символами.
- Имена полей и типов редактируются только при создании. После сохранения они доступны только для просмотра.

Качайте, тестируйте, о неисправностях сообщайте.

На JED за две недели я продвинулся с 124 места на 111. Темпы продвижения головокружительны  ^-^
« Последнее редактирование: 13.09.2013, 21:25:22 от Arkadiy »
*

sedoi

  • Новичок
  • 7
  • 0 / 0
Аркадий, здравствуйте! Возможно ли добавлять кастомные поля в категориях?
*

Arkadiy

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

zakin

  • Осваиваюсь на форуме
  • 17
  • 1 / 0
Классный плагин! Скажите, как можно вывести статьи с доп. полями в виде блога, например?
*

Arkadiy

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

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
приветствую.
планируется ли апдейт после выхода 3.2?

(визуально пока только вкладка уехала в материале)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор dmitrypro

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

Автор TRIGUN

Ответов: 0
Просмотров: 1524
Последний ответ 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