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

Alldar

  • Завсегдатай
  • 1504
  • 195 / 1
Оригинал: Хабрахабр

Кросс пост что бы удобнее было читать:

Популярная CMS Wordpress, распространяемая под лицензией GPL оказалась в центре скандала. Система управления контентом получила широкое распространение благодаря удачной архитектуре и встроенной системе «тем» с настраиваемыми шаблонами и «плагинов», что позволяет использовать Wordpress при разработке практически любых проектов от блогов до сложных новостных ресурсов.
По условиям лицензии все дополнения к CMS должны также выпускаться под GPL, но далеко не все разработчики выполняют их. Так, создатели популярной темы Thesis не скрывают нежелания переводить свой платный продукт в категорию свободных. Создатель проекта Мэтт Мулленвег (Matt Mullenweg) вступил в яростный диспут с Крисом Пирсоном (Chris Pearson), автором Thesis, и обвинил последнего в грубом нарушении условий GPL.



Свои аргументы и замечания создатель Wordpress подкрепляет мнением многочисленных экспертов и юристов, в частности юриста проекта Mozilla Хезер Микер (Heather Meeker), с которыми он консультировался. На основании анализа кода PHP и HTML, включая вызовы API, логики работы программы, эксперты заключили, что почти любая тема оформления, созданная для Wordpress, будет производной от основных тем CMS, лицензированных под GPL. И хотя создать не-GPL «тему» в принципе возможно, у такого расширения будет утрачена большая часть, если не полностью вся, функциональность Wordpress.

В итоге Мулленвег настаивает на том, что все дополнения его CMS, в том числе и темы оформления, обязаны следовать условиям GPL, а значит и распространяться под этой лицензией. Крис же считает, что Мэтт не прав в определениях, и утверждает, что темы оформления – по сути, независимые продукты, и их создатели вольны сами выбирать лицензии и строить бизнес по своему усмотрению.
Так как сторонам не удается достичь компромисса, для создания прецедента и разрешения спора представители Wordpress рассматривают возможность обращения в суд и уже в судебном порядке признать деятельность авторов Thesis незаконной и нарушающей условия лицензии GPL.

Лидер команды разработчиков Wordpress, Марк Джекит (Mark Jaquith), в своем блоге попытался детально разобрать причины, которые свидетельствуют о том, что создание плагинов и тем к Wordpress, нарушает лицензию, даже если в теме не используются прямые вставки основного кода CMS.

Тема для Wordpress представляет собой набор PHP-файлов, вызывающих функции системы и имеющих доступ к базовым структурам данных, которые становятся частью Wordpress, так как запускаются и обрабатываются одним PHP-процессом. Суть в том, что темы выполняются не над Wordpress, а именно внутри самой системы. Код тем и ядра в Wordpress настолько сильно переплетен, что взаимодействие между ними неотличимо от внутренних взаимодействий самой системы. Иными словами, php-файлы тем представляют собой отдельно поставляемые части самого Wordpress, а в соответствии с терминологией лицензии GPL, модули, которые включены в единый исполняемый файл или работают в едином адресном пространстве одного процесса, являются частью базовой программы.

Графические же файлы и файлы CSS не попадают под определение «производного» произведения и могут лицензироваться отдельно. И проект Wordpress признает за проектами право поставки таких файлов, а также Javascript-кода под любыми лицензиями, и не препятствует продаже тем и плагинов. Но доступ на сайте к таким дополнениям должен быть открыт только после оплаты. Причем php-файлы продаваемого продукта должны обязательно поставляться под лицензией GPL, что совсем не нравится авторам таких тем, так как при таких условиях, пользователи их продуктов смогут свободно обмениваться темами и создавать на их основе производные (и в частности коммерческие) продукты.

В свете этих событий Мулленвег пообещал, что Wordpress.org будет продвигать и осуществлять хостинг только тех тем, которые на 100% соблюдают условия лицензии GPL или иной совместимой лицензии. Для поддержки тех немногих авторов, которые создают 100%-совместимые с GPL темы и занимаются поддержкой и предоставлением других услуг, был создан даже специальный раздел, где публикуются GPL-темы с коммерческой поддержкой.

---

Думаю РокетЗемс растроятся :)

Вообще странная политика на самом деле. Не понимаю какой смысл в запрещении таких шаблонов? Желание авторов не продавать шаблоны под GPL понятно ибо это их хлеб и с такой лицензией не возможно будет остановить распространение шаблонов по варезникам. А вот зачем устроили эту полемику разработчики Wordpress не ясно, что именно это им даст кроме как негативные эмоции? Удалили бы шаблоны под неправильной лицензией из репозитория предварительно об этом сообщив в новостях и все как сделали Joomla.
« Последнее редактирование: 26.07.2010, 14:27:08 от Alldar »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Рядовой фрилансер против фриланс-биржи - какие шансы?

Автор nick71

Ответов: 30
Просмотров: 3907
Последний ответ 14.06.2017, 09:14:38
от Taatshi
Правила использования платных шаблонов

Автор lionsay

Ответов: 1
Просмотров: 2684
Последний ответ 30.01.2011, 12:25:08
от GWork
Использование элементов дизайна из платных шаблонов

Автор somick

Ответов: 20
Просмотров: 9236
Последний ответ 26.11.2010, 09:47:22
от jem777
правила использования (изменения) шаблонов с http://www.joomlademo.de в коммерческих целях

Автор vovchikku

Ответов: 0
Просмотров: 2121
Последний ответ 26.03.2009, 13:21:09
от vovchikku