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

Shyamasundar

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Народ, нужна помощь:
есть шаблон rt mixxmag ( http://demo.rockettheme.com/jan09/)
по умолчанию блок основного контента (maincontent-block) не оформлен, но я сделал к нему рамку, фон и паддинг и теперь на главной у меня есть пустой блок с рамкой, паддингом и фоном. Как его убрать? (на других-то страницах он нужен)
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Shyamasundar

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: как убрать блок с главной (rt_mixxmag_j15)
« Ответ #2 : 08.01.2010, 03:40:34 »
спасиб  ^-^
(только до конца не въехал как крошки с главной убирать (не получается))
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: как убрать блок с главной (rt_mixxmag_j15)
« Ответ #3 : 08.01.2010, 03:50:28 »
Код: php
<?php $menu = & JSite::getMenu();
if ($menu->getActive()!= $menu->getDefault()) { ?>
<div id="pathway">
<jdoc:include type="modules" name="breadcrumb" />
</div>
<?php } ?>
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Shyamasundar

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: как убрать блок с главной (rt_mixxmag_j15)
« Ответ #4 : 08.01.2010, 04:34:58 »
слушай, что-то я поторопился...
у меня такая штука:
Код
<?php if($this->countModules('right')) : ?>
<div id="maincontent-block">
<jdoc:include type="message" />
<?php if (!($frontpage_component == 'hide' and JRequest::getVar('view') == 'frontpage')): ?>
<jdoc:include type="component" />
<?php endif; ?>
</div>
<?php endif; ?>
и ничего не происходит
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: как убрать блок с главной (rt_mixxmag_j15)
« Ответ #5 : 08.01.2010, 05:05:16 »
Код: php
<?php if($this->countModules('right')) : ?>
<div id="maincontent-block">
<jdoc:include type="message" />
<?php $menu = & JSite::getMenu();
if ($menu->getActive()!= $menu->getDefault()) : ?>
<jdoc:include type="component" />
<?php endif; ?>
</div>
<?php endif; ?>
Я понятия не имею зачем сделан
<?php if($this->countModules('right')) : ?>
Видимо так надо?
Но имей в виду. При такой конструкции, если в позиции right не будет опубликованных модулей, блок контента пропадет на всех страницах.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Shyamasundar

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: как убрать блок с главной (rt_mixxmag_j15)
« Ответ #6 : 08.01.2010, 13:48:56 »
сорри, я ошибся. просто я как только не делал... уже запутался сам...
сделал так:
Спойлер
[свернуть]
блок исчез и на других страницах


опс... еще раз сорри. просто так происходит потому что там нет "опубликованых модулей". там их не будет. там просто блок для основного контента...
тогда надо прописать чтобы блок не отображался на главной. тоже выход.
ты написал как это сделать с крошками, слушай как тогда это сделать тоже самое с блоком?
« Последнее редактирование: 08.01.2010, 13:58:52 от Shyamasundar »
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: как убрать блок с главной (rt_mixxmag_j15)
« Ответ #7 : 08.01.2010, 14:03:18 »
Гм. А так?
Код: php
<?php $menu = & JSite::getMenu();
if ($menu->getActive()->id != $menu->getDefault()->id) : ?>
<div id="maincontent-block">
<jdoc:include type="message" />
<jdoc:include type="component" />
</div>
<?php endif; ?>
Просто замени весь код что в текстовом блоке на этот
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Shyamasundar

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: как убрать блок с главной (rt_mixxmag_j15)
« Ответ #8 : 08.01.2010, 14:08:10 »
 :D   *DRINK* работает! спасиб Lex!

Re: как убрать блок с главной (rt_mixxmag_j15)
« Ответ #9 : 10.01.2010, 23:22:29 »
Доброго всем времени суток! У меня тоже вопрос по этому шаблону - там вверху отоброжается дата (д/м/ч) Но! на английском. Как сделать так, чтобы было на русском?
P.S. Менял кодировку - не помогает  >:(  Зараннее очень благодарен! Кстати вот Шаблон
*

m3tr

  • Новичок
  • 3
  • 0 / 0
Re: как убрать блок с главной (rt_mixxmag_j15)
« Ответ #10 : 16.01.2010, 21:15:45 »
Доброго всем времени суток! У меня тоже вопрос по этому шаблону - там вверху отоброжается дата (д/м/ч) Но! на английском. Как сделать так, чтобы было на русском?
P.S. Менял кодировку - не помогает  >:(  Зараннее очень благодарен! Кстати вот Шаблон
Все названия месяцев и дней недели прописываются в этом файле rokutils. Только не забудь сохранить с кодировкой UTF - 8
*

m3tr

  • Новичок
  • 3
  • 0 / 0
Re: как убрать блок с главной (rt_mixxmag_j15)
« Ответ #11 : 16.01.2010, 21:23:24 »
Народ подскажите, у шаблона есть настройки где посетитель  у модуля может  менять стиль (light style, dark style и тд) а как сделать так чтоб изначально когда на сайт заходишь цвет модулей был задан тот какой хочу я (один модуль promo style второй light style например как здесь сделано http://demo.rockettheme.com/jan09/#)  а не те стили которые стоят по умолчанию? Помогите очень надо.
« Последнее редактирование: 16.01.2010, 21:26:45 от m3tr »
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

m3tr

  • Новичок
  • 3
  • 0 / 0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как создать новый блок в шаблоне?

Автор moov

Ответов: 7
Просмотров: 7756
Последний ответ 17.12.2018, 14:08:12
от arma
Как оставить модуль слайдшоу вшитый в шаблон, только на главной странице ?

Автор akteon25

Ответов: 4
Просмотров: 4834
Последний ответ 13.05.2016, 13:25:23
от akteon25
Вставить ручками рекламный блок вверх страницы шаблона раздела и категории

Автор annushka

Ответов: 2
Просмотров: 1758
Последний ответ 27.04.2015, 14:56:19
от annushka
Как прописать адрес главной страницы во 2 меню?

Автор p4o1

Ответов: 4
Просмотров: 2723
Последний ответ 25.04.2015, 10:17:54
от p4o1
Как найти и убрать чужие ссылки

Автор slalom

Ответов: 13
Просмотров: 5098
Последний ответ 27.08.2014, 22:24:03
от Eterno