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

vsSerjvs

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Очень нужна помощь
« : 28.11.2009, 09:33:56 »
Заюзал бедный поиск до дыр, но вот так и не нашёл ответа как именно вставлять flash в шапку шаблона, темболее если там уже стоит изображение?
Код
<div id="art-page-background-glare">
    <div id="art-page-background-glare-image"></div>
</div>
<div id="art-main">
<div class="art-Sheet">
    <div class="art-Sheet-tl"></div>
    <div class="art-Sheet-tr"></div>
    <div class="art-Sheet-bl"></div>
    <div class="art-Sheet-br"></div>
    <div class="art-Sheet-tc"></div>
    <div class="art-Sheet-bc"></div>
    <div class="art-Sheet-cl"></div>
    <div class="art-Sheet-cr"></div>
    <div class="art-Sheet-cc"></div>
    <div class="art-Sheet-body">
<div class="art-Header">
    <div class="art-Header-png"></div>
    <div class="art-Header-jpeg"></div>
<div class="art-Logo">
 <h1 id="name-text" class="art-Logo-name"><a href="<?php echo $baseUrl; ?>/">********</a></h1>
 <div id="slogan-text" class="art-Logo-text">********</div>
</div>
где Header-jpeg, как собственно и png шапка сайта, но вот почемуто пи смени на /путь к файлу/имя файла.swf ни чего не происходит...... :(

если полностью заменить весь приведённый код на этот:
Код
<object type="application/x-shockwave-flash"
data="c.swf?path=movie.swf"
width="400" height="300">
<param name="movie"
value="c.swf?path=movie.swf" />
</object>
это поможет?  :o
*

Simiys

  • Захожу иногда
  • 89
  • 2 / 0
Re: Очень нужна помощь
« Ответ #1 : 28.11.2009, 12:16:29 »
Вот код Хейдера и Лого... но вы не там смотрите... вам в CSS надо...
<div class="art-Header">
    <div class="art-Header-png"></div>
    <div class="art-Header-jpeg"></div>
<div class="art-Logo">

Если я был прав не забудь поставить + и посетить мой сайт. http://g-a-d.msk.ru/
*

vsSerjvs

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Re: Очень нужна помощь
« Ответ #2 : 28.11.2009, 13:32:49 »
Спасибо за подсказку с CCS, но вот суть проблемы осталась, не могу правильно прописать пути :(
Код
/* begin Header */
div.art-Header
{
margin: 0 auto;
position: relative;
z-index:0;
width: 1036px;
height: 175px;
}

div.art-Header-png
{
position: absolute;
z-index:-2;
top: 0;
left: 0;
width: 1036px;
height: 175px;
background-image: url('../images/Header.png');
background-repeat: no-repeat;
background-position: left top;
}

div.art-Header-jpeg
{
position: absolute;
z-index:-1;
top: 0;
left: 0;
width: 1036px;
height: 175px;
background-image: url('../images/Header.jpg');
background-repeat: no-repeat;
background-position: center center;
}
/* end Header */
при замене jpg файла или png на swf файл шапка просто тупо исчезает.....
*

Simiys

  • Захожу иногда
  • 89
  • 2 / 0
Re: Очень нужна помощь
« Ответ #3 : 28.11.2009, 18:53:14 »
Вот у вас код хейдера:
div.art-Header-png
{
   position: absolute;
   z-index:-2;
   top: 0;
   left: 0;
   width: 1036px;
   height: 175px;
   background-image: url('../images/Header.png');
   background-repeat: no-repeat;
   background-position: left top;
}
Просто вместо /images/Header.png выставите положение своего флэша. Внимательно посмотрите на размеры вашего баннера=) width: 1036px;
   height: 175px;
*

vsSerjvs

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Re: Очень нужна помощь
« Ответ #4 : 28.11.2009, 22:10:55 »
эм.... захожу в *templates/имя шаблона/images* и копирую туда *имя баннера.swf* в Joomla, в шаблоне редактирую template.css и в строчке кода  */images/Header.png* пишу */images/имя баннера.swf*, ракции на мои действия со стороны сайта на внесённые изменения 0 :( может в коде (который приведён выше) надо что то ещё изменить?
*

Simiys

  • Захожу иногда
  • 89
  • 2 / 0
Re: Очень нужна помощь
« Ответ #5 : 29.11.2009, 12:07:09 »
Тогда ../images/Header.jpg поменяйте=)

div.art-Header-jpeg
{
   position: absolute;
   z-index:-1;
   top: 0;
   left: 0;
   width: 1036px;
   height: 175px;
   background-image: url('../images/Header.jpg');
   background-repeat: no-repeat;
   background-position: center center;
}
/* end Header */
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нужна помощ - слетает шаблон поле того как я включаю SEO в Joomla !

Автор bogdan86

Ответов: 5
Просмотров: 2912
Последний ответ 18.12.2013, 14:03:55
от sergey_777-s
Нужна помощь. Огромное количество ссылок в разделе "Еще статьи"

Автор belicom

Ответов: 1
Просмотров: 1868
Последний ответ 07.02.2013, 13:26:59
от belicom
Требуется помощь по шаблону

Автор akhalex38

Ответов: 19
Просмотров: 2693
Последний ответ 09.07.2012, 15:00:57
от akhalex38
помощь по CSS

Автор kik84

Ответов: 4
Просмотров: 1860
Последний ответ 12.06.2012, 20:41:51
от kik84
shape5-construction требуется помощь по редактированию шаблона

Автор bumer_54

Ответов: 2
Просмотров: 2604
Последний ответ 10.06.2012, 20:49:22
от KKAAZZOO