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

Pozzitivsp

  • Захожу иногда
  • 87
  • 0 / 0
  • Нет ничего невозможного...
Народ помогите)) Хотел разместить код биржи изаметил что пропал тег <body> а есть какойто другой типа <body........ после него кода страница и аж в конце закрывающий тег </body>.
Думаю проверю в остальных шаблонах, и оказалось что везде так же! Помогите разобратся, спасибо
*

Goryhater

  • Осваиваюсь на форуме
  • 37
  • 0 / 0
Всмысле? Не просто <body></body>, а что-то вроде <body marginheight="0px" marginwidth="0px"></body> ?
Если да то это вроде как нормально  ^-^
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
Народ помогите)) Хотел разместить код биржи изаметил что пропал тег <body> а есть какойто другой типа <body........ после него кода страница и аж в конце закрывающий тег </body>.
Думаю проверю в остальных шаблонах, и оказалось что везде так же! Помогите разобратся, спасибо
да? поподробнее можно? интересно прЯмо стало?
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

Pozzitivsp

  • Захожу иногда
  • 87
  • 0 / 0
  • Нет ничего невозможного...
Goryhater, да чтото типа того. Да, оно вроди бы на роботу сайта не влияет. Но, что бы разместить код биржи нужно вставить код после тега <body>. А я как каснулся так и понял что его нету а идет то что вы написали только совсем другой текст. А когда вставляю код так сайт перестает работать(  и не знаю как это исправить..  куда вставлять этот код??
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
Цитировать
куда вставлять этот код??
а куда советуют?
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

Pozzitivsp

  • Захожу иногда
  • 87
  • 0 / 0
  • Нет ничего невозможного...
sinbad13, можно подробнее. Решил поставить код биржи, открываю шаблон и смотрю что вместо бывшего тега <body> появился <body id="bd" class="<?php echo $tmpTools->getParam(JA_TOOL_LAYOUT);?> <?php echo $tmpTools->getParam(JA_TOOL_SCREEN);?> fs<?php echo $tmpTools->getParam(JA_TOOL_FONT);?>" >
и еще пол страницы такого бреда...
 куда не вставиш код биржи сайет перестает работать.  
Прошу помочь, как исправить даную проблему.
*

Pozzitivsp

  • Захожу иногда
  • 87
  • 0 / 0
  • Нет ничего невозможного...
Да пока никуда, решил у Вас спросить сначала.
*

Alldar

  • Завсегдатай
  • 1504
  • 195 / 1
Шаблон какой?

Если из последних от JA то в index.php не чего вставлять не надо.

И какой код биржи? Мы тут конечно все их сообщества телепатов но все же будет лучше если вы напишите какая была инструкция по установке кода
« Последнее редактирование: 12.08.2010, 20:44:36 от Alldar »
*

Pozzitivsp

  • Захожу иногда
  • 87
  • 0 / 0
  • Нет ничего невозможного...
шаблон JA Rutile, биржа LinkFeed
*

Pozzitivsp

  • Захожу иногда
  • 87
  • 0 / 0
  • Нет ничего невозможного...
Основной код в начале страницы без вывода ссылок:


<?php

   define('LINKFEED_USER',**** ');

   require_once($_SERVER['DOCUMENT_ROOT'].'/'.LINKFEED_USER.'/linkfeed.php');

   global $linkfeed;

   $linkfeed = new LinkfeedClient();

?>


Ставим под левым меню:

<?php

   global $linkfeed;

   echo $linkfeed->return_links(2);

?>


Ставим справа:

<?php

   global $linkfeed;

   echo $linkfeed->return_links(2);

?>
« Последнее редактирование: 15.08.2010, 23:07:08 от Pozzitivsp »
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
Основной код в начале страницы без вывода ссылок:




вы бы не светили свой идентификатор.
папку с файлом кинули в корень LINKFEED_USER/linkfeed.php?
Ну и покажите куда вы вставляете этот код в index.php шаблона?
« Последнее редактирование: 16.08.2010, 06:36:24 от sinbad13 »
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

Pozzitivsp

  • Захожу иногда
  • 87
  • 0 / 0
  • Нет ничего невозможного...
хорошо сейчас удалю)   папку LinkFeed кинул в корневой каталог сайта а папку с идентификатором в которой файл Linkfeed.php кинул в папку LinkFeed

а куда его вставлять лучше? я пробовал после пары строк тега body ... но там очень много строк и я не знаю куда правильно...
*

Pozzitivsp

  • Захожу иногда
  • 87
  • 0 / 0
  • Нет ничего невозможного...
да кстати вы тоже если можно удалите картинку с идентификатором.
*

SinBad

  • Завсегдатай
  • 1879
  • 187 / 0
  • Мнне 40 лет, мне 40 лет, ума так и не нажил!
Цитировать
а куда его вставлять лучше? я пробовал после пары строк тега body ... но там очень много строк и я не знаю куда правильно...
вставляйте туда гдеен противоречит коду например не в скобках <?php ... ?>..и не разрывая HTML код.
Возможно как уже сказал Alldar в новых шаблонах идет слойное построение как и GK'вцы например. тогда надо  искать соотвествующий слой слой.
...Фет для них песни поёт. Фет не прикольный поэт - Фету никто не даёт.
*

Pozzitivsp

  • Захожу иногда
  • 87
  • 0 / 0
  • Нет ничего невозможного...
Все места перепробовал... постоянно выдает такую ошибку (((  шаблон менять что ли ...



Warning: require_once(/home/fitnesse/public_html/*****/linkfeed.php) [function.require-once]: failed to open stream: No such file or directory in /home/***/public_html/templates/jarutile/index.php on line 283


 
Fatal error: require_once() [function.require]: Failed opening required '/home/****/public_html/*****/linkfeed.php' (include_path='.:/usr/lib/php:/usr/local/lib/php:/usr/local/ZendFramework-1.9.0') in /home/***/public_html/templates/jarutile/index.php on line 283
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вывести путь до шаблона с помощью API Joomla?

Автор elche

Ответов: 13
Просмотров: 15814
Последний ответ 11.09.2018, 23:48:50
от DK-Scorp
Стили шаблона

Автор karkan25

Ответов: 12
Просмотров: 4543
Последний ответ 21.05.2017, 16:40:32
от karkan25
Проблема с изменением логотипа штатного шаблона rhuk_milkyway Joomla_1.5

Автор Porohok

Ответов: 6
Просмотров: 4873
Последний ответ 22.03.2017, 10:34:23
от Porohok
Настройка неадаптивного шаблона

Автор Zegeberg

Ответов: 4
Просмотров: 4592
Последний ответ 21.06.2016, 00:21:06
от Zegeberg
Редактирование шаблона

Автор gdmitry

Ответов: 1
Просмотров: 4424
Последний ответ 04.06.2016, 20:25:32
от Taatshi