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

audiomatique

  • Новичок
  • 4
  • 0 / 0
Всем привет. Дело такое, голову уже сломал себе как это сделать :-X
Имеется шаблон simplicity_ii (http://webmastermix.ru/shablony-dlya-joomla/101-simplicity-2.html)
установил я квикстарт с демо-данными (нужными мне), поковырялся и понял, что вся админка у меня на инглише, и все кнопки, баннеры и прочее  на английском. (половину кое-как перевел но сил моих больше нет)
Посмотрел, вроде есть Русифицированная Версия (http://joomlaforum.ru/index.php/topic,36859.0.html)
Вопрос к знатокам, как мне установить Русифицированную Версию и не потерять уже полуизмененный мною сайт? Хочется чтобы остальные кнопочки ввиде (read more, We have 1 guest online, и прочее изменилось) Нужно переносить базу данных? Да я даже готов чтобы все с нуля изменилось, главное чтобы демо-данные перевелись на русский. Пожалуйста распишите по шагам, прошу!! Спасибо Всем Отписавшимся! !
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
Re: перевести демо-данные на русский
« Ответ #1 : 14.05.2012, 15:50:28 »
Вам надо демо-данные перевести или админку?
Если админку, то это значит, что Вам нужно поставить всего лишь пакет русской локализации для вашей версии Joomla.
Вот здесь http://joomlaportal.ru/ в правой колонке все ссылки на пакеты локализаций
Ставятся они как обычные компоненты через Менеджер расширений.
Ну и после установки указать в настройках какой язык использовать по-умолчанию
*

audiomatique

  • Новичок
  • 4
  • 0 / 0
Re: перевести демо-данные на русский
« Ответ #2 : 14.05.2012, 16:22:29 »
админка мне особо и не нужна, вроде и так все понятно
мне нужно перевести имеено демо-данные(дело даже не в статьях, статьи не важны, а остальное - да), как быть?
да, еще хотел сказать, что в директории \WebServers\home\mysite\www\language\
только одна папка en-GB со всеми модулями и прочим, все на английском :'(
« Последнее редактирование: 14.05.2012, 16:36:45 от audiomatique »
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
Re: перевести демо-данные на русский
« Ответ #3 : 15.05.2012, 09:54:42 »
да, еще хотел сказать, что в директории \WebServers\home\mysite\www\language\
только одна папка en-GB со всеми модулями и прочим, все на английском :'(
А откуда взяться другой папке, если Вы поставили квикстар с англ. версией Joomla.
Сказал же выше - поставьте пакет русской локализации и будет Вам счастье...
*

I_CaR

  • Новичок
  • 2
  • 0 / 0
Re: Перевести демо-данные на русский
« Ответ #4 : 06.05.2013, 03:30:01 »
Такая же хня...
Поставил пакет сразу!
Админка по русски, а эта канитель на аглицком, на локалке всё норм. Почему так?


---------
старый поклонник Drupal+UberCart
« Последнее редактирование: 06.05.2013, 03:34:10 от I_CaR »
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Перевести демо-данные на русский
« Ответ #5 : 06.05.2013, 04:01:17 »
для J 1.5 - 2 пакета - 1 для админки, другой для фронта. Ну и включить нужные языки не забываем в управлении языками.
P.S> если новые проекты, то начинайте их на J 2.5
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Шаблон с Quickstart и русский ?

Автор abulka

Ответов: 50
Просмотров: 16515
Последний ответ 05.06.2012, 17:12:59
от scorpion23
Что вам перевести?

Автор Kyrsor

Ответов: 1
Просмотров: 1760
Последний ответ 06.03.2012, 22:43:22
от entoniel
Русский язык для RSTickets! Pro 2.0.0

Автор Mausi

Ответов: 4
Просмотров: 4288
Последний ответ 16.02.2012, 12:47:33
от Kyrsor
Русский язык компонента Job Board - Joomla 1.5

Автор talgautb

Ответов: 2
Просмотров: 2818
Последний ответ 03.08.2011, 17:52:16
от talgautb
Русский для плагина Рейтинга/голосования статей Core Design AJAX Vote plugin

Автор SorokinS

Ответов: 0
Просмотров: 3176
Последний ответ 05.05.2011, 21:20:27
от SorokinS