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

Я Системный Администратор, на мне помимо прочих и обязанности по сайту Компании. В фирму устроился недавно, сайт создан был в конце 2007 года. Порядок на сайте я навел (кроссбраузерность, отображение без картинок, шрифты и прочее), за контентом слежу... но сейчас задался задачей добавить новые функции... с системами управления сайтом разобрался... определил что стоит либо Joomla, либо Mambo... Больше похожа на Joomla. С создателем сайта связь потеряна, а он как я понял многое поуберал и скрыл: копирайт Joomla, главное меню из Административной панели...
-- Вопрос: -----------------
1) Как определить какая версия установлена: по оформлению, может прописано в каком нибудь файле в каталоге сайта...
2) Как вернуть гл.меню Административной панели? (Хотелось бы получить доступ к остальным функциям, создатель дал только ссылки: к Административной панели; Управлением картой сайта; Управление пользователями; Изменение шаблона сайта)

[вложение удалено Администратором]
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
1 - посмотри файл includes/version.php, судя по скриншоту очень похожа на одну из версий Lavra edition
2 - дай себе админские функции через phpmyadmin
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm

Вот ЖУК этот СОЗДАТЕЛЬ! Он всё подчистил... :(
Цитировать
<?php

/** Version information */
class version {
   /** @var string Product */
   var $PRODUCT = '';
   /** @var int Main Release Level */
   var $RELEASE = '';
   /** @var string Development Status */
   var $DEV_STATUS = '';
   /** @var int Sub Release Level */
   var $DEV_LEVEL = '';
   /** @var string Codename */
   var $CODENAME = '';
   /** @var string Date */
   var $RELDATE = '';
   /** @var string Time */
   var $RELTIME = '';
   /** @var string Timezone */
   var $RELTZ = 'GMT+3';
   /** @var string Copyright Text */
   var $COPYRIGHT = '.';
   /** @var string URL */
   var $URL = '';
}
$_VERSION =& new version();

$version = "Version: " . $_VERSION->PRODUCT . " " . $_VERSION->RELEASE . ".". $_VERSION->DEV_LEVEL . " "
. $_VERSION->DEV_STATUS
. " [".$_VERSION->CODENAME ."] " . $_VERSION->RELDATE . " "
. $_VERSION->RELTIME . " " . $_VERSION->RELTZ;
?>
Цитировать
2 - дай себе админские функции через phpmyadmin
Пожалуйста, подскажите как?
*

iT)ZevS(

  • Захожу иногда
  • 177
  • 31 / 2
есть подозрение что у вас ограниченная учетная запись.
вам нужно с помощью phpmyadmin зайти в таблицу jos_users базы сайта
в ней найти запись с id = 62 посмотреть логин и восстановить пароль. как?!
*

..С...е...р...ы...й..

  • Захожу иногда
  • 51
  • 110 / 2
на мамбу похоже, а может это модифицированная сборка

Разобрался я таки с phpMyAdmin! Вошел, пришлось искать пароль доступа... Обнаружил что баз несколько... Выбрал наибольшую по размеру... Таблица там не jos_users а os_users (О чем это говорит?) Там мой логин и пароль который я изменил когда начал заниматься сайтом компании, и указано что я суперадминистратор... помимо моего там 2 пользователя, которые я заблокировал\отключил при изменении пароля администратора. у моего логина id=62, gid=25, у другого, (думаю это тот самый создатель) id=67, gid=25, и третий с именем и логином "center" имеет id=69, gid также 25... Вот все отличия между нами... Может поменять id на 67? Возникнут ли у меня проблемы? Если бы не указания iT)ZevS( именно на запись с id=62, то я бы подумал что это просто порядковый номер пользователей...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вирусные ссылки на моём сайте вида http://pro-mani.ru/index.php/component/jooms

Автор webambrela

Ответов: 7
Просмотров: 15037
Последний ответ 22.05.2021, 20:20:50
от ProtectYourSite
Joomla! 1.6 не могу войти в админку

Автор stendapuss

Ответов: 3
Просмотров: 4901
Последний ответ 01.07.2017, 13:35:38
от stendapuss
Как переделать сайт, cозданный в Joomla Lavra Edition 2008 (1.0.15) на Joomla3x ?

Автор KrisKras

Ответов: 12
Просмотров: 5450
Последний ответ 21.02.2017, 15:15:17
от KrisKras
Восстановление управляемости сайта на Joomla 1.0.12 после обновления php до версии 5.5 и последовате

Автор galogen

Ответов: 6
Просмотров: 4774
Последний ответ 15.02.2017, 01:58:44
от Alex Revo
Joomla 1.0.15 и php 5.3.1

Автор lsk

Ответов: 36
Просмотров: 34761
Последний ответ 27.05.2016, 18:35:44
от Wertos