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

an5rew

  • Новичок
  • 7
  • 0 / 0
Меню сайта
« : 22.07.2009, 18:39:38 »
Как сделать, чтобы расстояние между списком пунктов меню и верхним с нижним краями ячейки было меньше, но при этом не тронув остальные модули?

*

PaLyCH

  • Давно я тут
  • 956
  • 146 / 19
  • Менеджер проектов
Re: Меню сайта
« Ответ #1 : 22.07.2009, 20:47:42 »
CSS и HTML код где? Вроде мы не телепаты
*

an5rew

  • Новичок
  • 7
  • 0 / 0
Re: Меню сайта
« Ответ #2 : 22.07.2009, 21:12:09 »
Стиль модулей (..template/html/modules.php)
Код
function modChrome_mymenu($module, &$params, &$attribs)
{ ?>
<table width="200" border="0">
  <tr>
    <td>
    <div class="module-head">
    <div class="module-title"><?php echo $module->title ?></div></div>
    </td>
  </tr>
  <tr">
    <td><div class="module-content"><?php echo $module->content ?></div></td>
  </tr>
</table>
<?php
}
?>

index.php
Код
<body>
<table width="999" align="center">
  <tr>
    <td height="409" colspan="3" valign="top" class="tab"><div class="head"></div></td>
  </tr>
  <tr>
    <td width="200" valign="top" bgcolor="#FEC98D" class="tab"><jdoc:include type="modules" name="left" style="mymenu" /></td>
    <td valign="top"><jdoc:include type="component" /></td>
    <td width="200" valign="top" bgcolor="#FEC98D" class="tab"><jdoc:include type="modules" name="right" style="mymenu" /></td>
  </tr>
</table>
</body>

template.css
Код
html{height:100%;}

body{
margin:0px;
height:100%;
font-family: Verdana, Geneva, sans-serif;
font-size: 0.8em;
color: #666;
background-color:#FEDFBC;
}

/*  Heading Formatting */
h1 {font-size:1.9em;line-height: 0.8em;font-weight: 900;color: #000;}
h2 {font-size:1.7em;line-height: 0.8em;font-weight: 900;color: #000;}
h3 {font-size:1.5em;line-height: 0.8em;font-weight: 900;color: #000;}
h4 {font-size:1.4em;line-height: 0.8em;font-weight: 900;color: #000;}
h5 {font-size:1.3em;line-height: 0.8em;font-weight: 900;color: #000;}
h6 {font-size:1.2em;line-height: 0.8em;font-weight: 900;color: #000;}

/*links*/
a:link {color: #CC6600;}
a:hover {color: #659FDE;}
a:visited {color: #CC6600;}
img {border: 0 none;}

div.head{
background-image: url(../images/hd.jpg);
height: 409px;
width: 1001;
background-repeat: no-repeat;
position: relative;
left: 130;
}

.module-head{
background-image: url(../images/menu-header.jpg);
background-repeat: no-repeat;
height: 30px;
position: relative;
}

.module-title{
position: relative;
left: 65px;
top: 5px;
font-size: 15px;
color: #FFF;
}

.module-content{
position: relative;
font-size: 12px;
}
*

PaLyCH

  • Давно я тут
  • 956
  • 146 / 19
  • Менеджер проектов
Re: Меню сайта
« Ответ #3 : 22.07.2009, 21:15:33 »
Скромный такой CSS. Люблю такие. Попробуй довабить
Код: css
.module-content ul{
margin:3px;
padding:0}
*

an5rew

  • Новичок
  • 7
  • 0 / 0
Re: Меню сайта
« Ответ #4 : 22.07.2009, 21:18:01 »
Помогло, спасибо большое!
Скромный такой CSS. Люблю такие.
Просто шаблон только недавно начал делать, поэтому еще не все оформил=)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ширина меню

Автор alex86r93

Ответов: 5
Просмотров: 4847
Последний ответ 14.06.2018, 05:13:50
от KANEGI
как сделать кнопки меню!

Автор Millenium_3000

Ответов: 10
Просмотров: 11362
Последний ответ 17.08.2017, 17:24:12
от Intrande
Вопрос по добавлению тега в МЕНЮ j 1.5

Автор berTalino

Ответов: 12
Просмотров: 4575
Последний ответ 29.03.2017, 16:20:43
от berTalino
Как сделать резиновой центральную чать сайта?

Автор genkey

Ответов: 8
Просмотров: 5439
Последний ответ 28.05.2016, 10:45:37
от vipiusss
Как увеличить ширину левого меню?

Автор afina2009

Ответов: 8
Просмотров: 2667
Последний ответ 09.04.2016, 23:00:36
от afina2009