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

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Есть ли для К2 готовое решение, как добавить ещё один тип дополнительных полей "календарь" (не путать с модулем календаря)? То есть чтобы при создании материала можно было календарём выбирать какую-то дату (дату создания программы, ну или любого события).
« Последнее редактирование: 25.10.2011, 13:59:08 от Dorfman »
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: K2: дополнительное поле КАЛЕНДАРЬ
« Ответ #2 : 27.08.2011, 16:45:57 »
о, ни фига себе... Наверное, и не нашёл по поиску... Описание-то на англ. Но всё понятно. Да ещё целая куча прибамбасов!
1) Поле выбора даты с использованием widget-а Joomla
2) Цена с возможностью мультивыбора (напр., розница и опт) На JED в описании, по-моему, автор прикольнулся и о проститутках пример написал:
Цитата: Аффтар
1 night: 150USD, > 1night but < 1week: 120USD, > 1 week: 100USD
:laugh:
3) вывод на GoogleMaps
4) поле с предустановленной проверкой валидности: alpha, alphanum, number, real, integer, email, url
Ну, и ещё куча полезностей

 Статик, +1
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: K2: дополнительное поле КАЛЕНДАРЬ
« Ответ #3 : 27.08.2011, 22:58:29 »
Ага, ток там баг есть - если использовать в качестве доп. полей таблицу - тогда слетают стили в админки у материалов, категориям которых присвоен данный тип - это из-за несовместимости мутулзов и плагина =)
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: K2: дополнительное поле КАЛЕНДАРЬ
« Ответ #4 : 28.08.2011, 02:56:11 »
дык, доп. поля по дефолту в К2 таблицей выводятся... :(
Ладно, спасибо за репорт, бум пробовать побороть
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: K2: дополнительное поле КАЛЕНДАРЬ
« Ответ #5 : 28.08.2011, 11:07:32 »
На фронте это никак не сказывается, а стили слетают только в админке при редактировании материала =)
В принципе, не критично.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: K2: дополнительное поле КАЛЕНДАРЬ
« Ответ #6 : 28.08.2011, 14:12:31 »
Если этот плагин доточить и русифицировать - полезная фишка будет в новом каталоге расширений.
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: K2: дополнительное поле КАЛЕНДАРЬ
« Ответ #7 : 28.08.2011, 17:37:30 »
А нафига его русифицировать?
Там, вроде, и так все понятно на примерах.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Вернёмся к нашим баранам... Всем сказал "спасибо" ещё в августе, и только сейчас руки дошли... КТО-НИБУДЬ понял, как с ним работать?

Хочу сделать "Календарь". Создал поле с именем как на картинке:
Код
K2f---valid=datetime:::low=+0:::high=+3:::required=true---Datum
Но в типах доп. полей ничего нового не появилось. И без типа ничего не отображается :(

Помогите, плз!
« Последнее редактирование: 23.10.2011, 12:15:10 от Dorfman »
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
При создании дополнительного поля с данным именем тип допполя выстави текстовое поле
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
не помогло...  >:(

« Последнее редактирование: 23.10.2011, 15:19:11 от Dorfman »
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
А нет никаких иных решений, кроме указанного выше? Как-то ручками с картинок переписывать неудобно. Имеется в виду чтобы после установки расширения новые поля появлялись в штатном дропдауне?
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Не знаю, это к ув. SDKiller вопрос, может натолкнет на мысль, как это реализовать.

А плагин багнутый, но у меня работал...

Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
А плагин багнутый, но у меня работал...

Да уж, прописывать вот такие закорюки каждый раз, когда нужен будет календарик? А с гуглокартой там вообще строка километровая (правда, тоже не запустилось у меня). И с синтаксисом у разработчиков фигня в описаниях - думаю, это понятно только им самим. Короче, фтопку. Но всё равно спасибо: отрицательный результат - это тоже результат.

Кстати, а в версии К2 2.5 не реализованы такие поля, случаем?

Что меня на это дело натолкнуло. Есть фирма, (хозяин - мой приятель) у них около 500 билл-бордов по городу. Вот я и надумал поставить под К2 этот каталог, чтобы девочка-менеджер прямо на сайте отмечала, что если борд в аренде, то до какой даты (отсюда потребность в календарике). И вот ещё в соседней теме я под этот же проект вопрос задавал по поводу оптовой цены - как закрыть от незарегенных только одно поле из нескольких?

« Последнее редактирование: 23.10.2011, 18:20:53 от Dorfman »
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Я считаю, что если и ставить 2.5 - то на 1.7 Joomla (вроде, говорят, она пошустрее). Но, т.к. пока не делал проектов по 1.7 Joomla, то и что-то советовать не могу.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Зачем мучить допполя для этого.
Сделать плагином отдельной вкладкой и ваять там что угодно - К2 это позволяет.
Там к каждой вкладке в форме редактирования материала в админке можно прицепить плагином что-нибудь, либо новую вкладку сделать.
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Сделать плагином отдельной вкладкой и ваять там что угодно - К2 это позволяет.

Теорисиьки это понятно... А праксиськи - моск не позволяет. Вот непонятно, почему одна из стандартных форм (которая, кстати, уже интегрирована в Joomla по дефолту) - а именно календарь - везде отсутствует, и ни К2, ни конструкторы форм её не используют?
Я уже и конструкторы форм для этой цели пытался прицепить - ничего нету... Чё делать?! Помогите!

Там к каждой вкладке в форме редактирования материала в админке можно прицепить плагином что-нибудь, либо новую вкладку сделать.

Ну, думаю, логичнее было бы как-то к доп.полям всё-таки её цеплять... Но это в принципе можно впендюрить через шаблон - просто после "штатных" доп. полей продолжить проверку чёт-нечёт и вставить дату... Я правильно понимаю?
« Последнее редактирование: 23.10.2011, 20:46:40 от Dorfman »
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Вот еще, мб пригодится

Спасибо. Но, к сожалению, самостоятельно в К2-шные доп.поля мозгов не хватит добавить :(

Бум ждать добрых людей - мож, кто делал?
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Всё это, а также многое другое, доступно в К2 при использовании компонента-надстройки Sherpa. Он пока ещё ещё сыроватый, но уже может ого-го!
« Последнее редактирование: 25.10.2011, 15:32:05 от Dorfman »
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
Зачем мучить допполя для этого.
Сделать плагином отдельной вкладкой и ваять там что угодно - К2 это позволяет.
Там к каждой вкладке в форме редактирования материала в админке можно прицепить плагином что-нибудь, либо новую вкладку сделать.
подскажите как сделать доп.вкладку
сам шучу - сам смеюсь
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Решено: Более одной группы доп. полей

Автор chilly_bang

Ответов: 75
Просмотров: 11817
Последний ответ 07.02.2022, 17:06:11
от Dobrota
[Решено] K2 не сохраняет настройки

Автор Dobrota

Ответов: 2
Просмотров: 2917
Последний ответ 07.02.2022, 15:58:04
от Dobrota
Ошибка ПРИ создании материала В К2 - РЕШЕНО

Автор korchaga

Ответов: 1
Просмотров: 926
Последний ответ 28.12.2020, 03:21:46
от korchaga
[Решено] Получить alias материала в плагине, как?

Автор x1

Ответов: 10
Просмотров: 1211
Последний ответ 23.07.2020, 11:45:07
от x1
Дополнительное поле Ссылка / Как изменить текст?

Автор designerandrey

Ответов: 6
Просмотров: 997
Последний ответ 20.07.2020, 16:56:57
от designerandrey