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

stepiko79

  • Новичок
  • 1
  • 0 / 0
Изменить ширину позиции
« : 08.12.2014, 21:57:26 »
Не могу изменить ширину позиций front1, front2, front3. Они прописаны так что ессли испульзется одна позиция то ее размер большой, если 2 две- средний, если 3- маленький. А мне нужно сделать чтобы при использовании 3х позиций было - 1 средний и 2 меленьких.
Где прописывается размер я нашел, но не знаю как изменить HTML так чтобы front2 - med, front1 и front 3 - small. Помогите пожалуйста. Прикладываю часть кода HTML который как я понял за это отвечает, и CSS так же отвечающий за это.

HTML
//Module Configuration
$frontheader = 0;
$menumoo = 0;
$syndicate = 0;
$banner = 0;
$user3 = 0;
$user4 = 0;
$left = 0;
$right = 0;
$top = 0;
//Users Based Combos
$users_front = 0;
$users_top_container = 0;
$users_top = 0;
$users_bottom = 0;
$users_footer = 0;
//Users Front Based Combos
if ( $this->countModules('front1 and front2 and front3')){
     $users_front = 'users_med_front';     
   
} else if ( $this->countModules('front1 and front2') || $this->countModules('front2 and front3') || $this->countModules('front1 and front3')){
    $users_front = 'users_big_front';
}

CSS
/* USERS Front Container */
#users_front {
   margin: 0;
   padding: 0;
}
#users_front .moduletable {
   margin: 0;
   padding: 3px 8px 10px 8px;
   background-color: #FFFFFF;
   border: 1px solid #f2f2f2;
}
.users_front, .users_med_front, .users_big_front {
   overflow: hidden;
   float: left;
   margin-left: 1%;
}
.users_med_front {
   width: 17%;
}
.users_big_front {
   width: 49.5%;
}
div:first-child.users_med_front, div:first-child.users_big_front {
   margin-left: 0;
}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как изменить шаблон категории в Joomla 1.5?

Автор nagav

Ответов: 8
Просмотров: 5560
Последний ответ 24.10.2016, 22:09:01
от nagav
Как изменить шрифт в yoo Explorer

Автор frion

Ответов: 2
Просмотров: 5548
Последний ответ 19.05.2016, 10:31:42
от iliamuromec
Как увеличить ширину левого меню?

Автор afina2009

Ответов: 8
Просмотров: 2667
Последний ответ 09.04.2016, 23:00:36
от afina2009
Изменить имя папки шаблона.

Автор vdm-m3

Ответов: 8
Просмотров: 10647
Последний ответ 11.11.2015, 23:45:17
от ShamilHan
Изменить шаблон сайта

Автор Marsello88

Ответов: 12
Просмотров: 2372
Последний ответ 19.08.2015, 12:44:13
от vipiusss