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

tastak87

  • Захожу иногда
  • 61
  • 0 / 2
Доброго времени суток! Помогите пожалуйста, у меня на сайте есть много скачиваемых файлов, так вот я хотел бы что бы около ссылки с файлом было написано (скачали xx раз) Как и с помощью чего мне это осуществить.
*

Arkadiy

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

tastak87

  • Захожу иногда
  • 61
  • 0 / 2
Для этого вам надо изменить ссылку на файл на другую, которая будет ссылаться на страницу, где стоит механизм счета количества скачивания, записи его в базу, редиректа на сам файл, чтобы он все-таки скачался.
Когда мы получили запись в базе о кол-ве скачивания файла ее можно будет считать на странице где стоит эта ссылка.

Спасибо конечно! Но как это осуществить? Можно по подробней? Я только начинающий разработчик...
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Вы сможете написать маленький компонент на один контроллер? Пишете на каких языках (программирования)?
*

tastak87

  • Захожу иногда
  • 61
  • 0 / 2
Не пишу ни на чём :) знаю только HTML и CSS, я думал есть какой то готовый плагин для этих целей :(
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Плагинов нет, поищите компонент, подходящий под ваши задачи. Я пользуюсь Akeeba Release System, он показывает кол-во скачиваний.
*

tastak87

  • Захожу иногда
  • 61
  • 0 / 2
Плагинов нет, поищите компонент, подходящий под ваши задачи. Я пользуюсь Akeeba Release System, он показывает кол-во скачиваний.

Спасибо сейчас поищу.
*

tastak87

  • Захожу иногда
  • 61
  • 0 / 2
Плагинов нет, поищите компонент, подходящий под ваши задачи. Я пользуюсь Akeeba Release System, он показывает кол-во скачиваний.

А если я его поставлю, мне придётся все мои материалы точнее файлы в них заново какт о переделывать? что бы он считал их? или есть возможность подгрузить к ууже созданным сылкам файлов?
*

tastak87

  • Захожу иногда
  • 61
  • 0 / 2
Так я установил! Как мне теперь сделать что бы на моих ссылках появились количество нажавших? ну или скачавших
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
На ваших ссылках что-то появится если вы что-нибудь напрограммируете. Я предложил вам готовый компонент, потому, что вы не программируете. Теперь надо перенести все ваши файлы в этот компонент, чтобы загрузка осуществлялась из него.
*

tastak87

  • Захожу иногда
  • 61
  • 0 / 2
На ваших ссылках что-то появится если вы что-нибудь напрограммируете. Я предложил вам готовый компонент, потому, что вы не программируете. Теперь надо перенести все ваши файлы в этот компонент, чтобы загрузка осуществлялась из него.

Это я понял! А как это сделать? Я что то попытался но не понял! Вобщем в этом плагине я создал какой то " Visual Croups" после создал после создал категорию в "Categories" и после создания в категориях под  столбцом "Visual Group" стоит ошибка,
Код
Warning: array_key_exists() expects parameter 2 to be array, null given in /home/gameplug/public_html/administrator/components/com_ars/helpers/select.php on line 606
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Это система для раздачи файлов, предназначена в основном для разработчиков, осуществляющих поддержку своих разработок и регулярно делающих новые дистрибутивы своих продуктов. Заточка такая. В связи с этим такая структура. Визуальные группы, если они нужны, в них выпуски, в выпусках объекты, т.е. файлы для скачивания. Документация на это расширение есть и довольно подробная. Единственный недостаток документации - она на английском. https://www.akeebabackup.com/documentation/arsdocumentation.html
*

tastak87

  • Захожу иногда
  • 61
  • 0 / 2
Это система для раздачи файлов, предназначена в основном для разработчиков, осуществляющих поддержку своих разработок и регулярно делающих новые дистрибутивы своих продуктов. Заточка такая. В связи с этим такая структура. Визуальные группы, если они нужны, в них выпуски, в выпусках объекты, т.е. файлы для скачивания. Документация на это расширение есть и довольно подробная. Единственный недостаток документации - она на английском. https://www.akeebabackup.com/documentation/arsdocumentation.html

Жаль :(
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Адекватный счётчик посещаемости страниц материалов

Автор palexa

Ответов: 4
Просмотров: 1524
Последний ответ 08.04.2018, 01:00:28
от palexa
Счетчик посетителей

Автор ivan1975

Ответов: 0
Просмотров: 1073
Последний ответ 04.01.2018, 02:11:07
от ivan1975
Ищу Счетчик изделий

Автор lokiqq

Ответов: 1
Просмотров: 808
Последний ответ 24.10.2017, 03:46:04
от yandex_hb
Счетчик выполненных объектов

Автор sheina

Ответов: 1
Просмотров: 1040
Последний ответ 26.05.2017, 09:55:51
от vipiusss
Счетчик увеличения количества

Автор BenderRdrigues

Ответов: 13
Просмотров: 6395
Последний ответ 17.08.2016, 00:55:54
от Fedor Vlasenko