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

shuzi

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Всем привет,
Простите я не особый программист и в php не секу. У меня есть модуль от yootheme - latest tweet (mod_yoo_tweet). так что там нужно куда вставить чтобы все ссылки которые выводит модуль на страницы сайта были заключены в noindex и nofollow.
Спасибо большое. Если надо я выложу файл какой модуля..
*

shuzi

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
ап !! ребята что никто не шарит?
*

reg-ad-site

  • Захожу иногда
  • 410
  • 14 / 3
  • Если помог, ставь +
а что так грубо то! Делов на 1 минуту, но вот за слово не шарит как то и подсказывать не охота!
*

shuzi

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Простите ребят если задел... Не хотел, слово то вроде нормальное.
Просто целый форум знающих людей, а уже неделю не могу сделать эту штучку.
 *DRINK*
*

FerrumLogic

  • Захожу иногда
  • 213
  • 17 / 0
  • Я ушел чтобы с разбегу вернуться
Отредактируйте шаблон вывода модуля, добавив необходимые теги
*

Adeptus

  • Завсегдатай
  • 1861
  • 219 / 15
В папке модуля есть каталог TMPL.
В нем 2 файла - list.php и single.php.

В этих файлах ищите все вхождения тегов

Код
<a href=".............">XXXXXXXXXXXX</a>

и ставьте свои ноиндекс-нофоллоу...
*

shuzi

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
В list.php нашел только такое:
               
Код
<p class="meta">
<?php if ($show_author) : ?>
<span class="author">by <noindex><a href="<?php echo $author->link; ?>"><?php echo $author->name; ?></a></noindex></span>
<?php endif; ?>
Но тут как я понял только про картинку автора и ссылку на него?
Может тут тоже как-то нужно вставить в код что снизу?
Код
<?php
$i = 0;
foreach ($feed->items as $key => $item) :
$link      = $item->get_link(0, 'alternate');
$image     = $item->get_link(0, 'image');
$published = $item->get_date('Y-m-d H:i:s');
$author    = modYOOtweetHelper::getAuthor($feed, $item);
$text      = modYOOtweetHelper::getText($feed, $item);
$i++;
?>
*

shuzi

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Хм... сейчас все ссылки твитера типа #tema стали обычным текстом, а ссылки которые я пощу - остались ссылками
« Последнее редактирование: 26.07.2011, 17:56:09 от shuzi »
*

shuzi

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
все решил... спасибо.. подставил туда, где текст выводится
*

eAndy

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • eAndy Money Lab.
А как текст\абзац в статье заключить в ноуиндекс?
вставка в режиме просмотра хтмл не прокатывает
*

vip otkritki

  • Захожу иногда
  • 50
  • 0 / 0
Привет всем. Ответьте кто хорошо знает. Интересует правильно ли я вставляю в код видео nofollow? noindex точно правильно. Вопрос конкретно правильно ли вставлен nofollow? Спасибо.
Код
<noindex><iframe src="http://vk.com/video_ext.php?oid=165408346&amp;id=163457473&amp;hash=1e10e576f1def186&amp;hd=1" mce_src="http://vk.com/video_ext.php?oid=165408346&amp;id=163457473&amp;hash=1e10e576f1def186&amp;hd=1" rel="nofollow" frameborder="0" height="500" width="500"></iframe></noindex></p></td>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

модуль Newsflash: как вывести дату?

Автор joomloid

Ответов: 5
Просмотров: 3589
Последний ответ 03.04.2019, 12:25:27
от pH43
Как отредактировать модуль mod_yoo_slider?

Автор vitaliy4us

Ответов: 0
Просмотров: 2491
Последний ответ 06.12.2017, 16:14:45
от vitaliy4us
Модуль "Случайное изображение"

Автор irina 4444

Ответов: 16
Просмотров: 8425
Последний ответ 26.05.2017, 12:47:56
от gvg
Стандартный модуль Авторизации расположить горизонтально

Автор reg-ad-site

Ответов: 34
Просмотров: 9612
Последний ответ 17.04.2017, 12:53:45
от speedrage
Как вызвать модуль с текстом, если не работает админка?

Автор kirill-juk

Ответов: 2
Просмотров: 2267
Последний ответ 19.11.2016, 00:43:18
от SeBun