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

Dimjikk

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Доброго времени суток. Перерыл кучу статей - найти точный ответ не получается.
Суть вопроса такова: как сделать так, чтобы в результатах поиска по конкретной поисковой фразе выводилась только главная страница сайта, и как сделать для нее статичное описание. На данный момент по запросу выводится какая-либо страница категории/раздел.

Заранее благодарю.
*

antony2606

  • Давно я тут
  • 633
  • 46 / 4
  • Работаем!
Здравствуйте. Плохо "копали" ) Вот прямо чтобы сходу поменять не получится... ибо результаты выдачи поисковиков зависят от ролевантности страницы: тайтл, description, теги и собственно само содержимое (например текст) к поисковому запросу.
Простыми словами: короче, в результате выдачи будут те страницы, которые по мнению поисковиков будут ближе к запросу по отношению к содержимому на странице. Напрямую воздействовать на поисковую выдачу не получится, но можно увеличить ролевантность вашей целевой страницы к поисковому запросу... как это сделать - изучайте SEO или обратитесь к специалистам.

Что вы подразумеваете под " статичное описание " ? Если вы имеете ввиду то, что выводится в результате выдачи под заголовком, то за это отвечает тег description.
*

stendapuss

  • Давно я тут
  • 945
  • 20 / 0
  • Valera Stankevich
Или я что то не понимаю, подскажите. Как может быть так сделано что фраза поисковая лежит на сотой странице. А по поиску выдается главная.
По моему где робот нашел фразу, на какой странице, ту и выдаст в поиске. Если фраза есть на главной выдаст главную. Если имели в виду название сайта, можно фразу забить туда, то она будет фигурировать на всех страницах в теге H1 или 2 не помню.
Посмотрите код страницы. Все будет ясно. Робот любит теги h1 . H2. И лучше чтоб они были один раз. И текст выделенный ( не цветом, а кнопкой выделить текст жирный).
Код страниц смотрите. И все ясно будет.
В чем не прав поправьте.
*

antony2606

  • Давно я тут
  • 633
  • 46 / 4
  • Работаем!
По моему где робот нашел фразу, на какой странице, ту и выдаст в поиске.
Не стоит забывать о входящих ссылках...)
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Или я что то не понимаю, подскажите.
Ага, потому что у нас в последнее время тенденция: не дают ссылок на проблему!

Придется правила писать для ветки: нет ссылки - сразу в свалку!

Потому что в противном случае - обсуждение сводится просто к демагогии, гаданию, в общем, -  разговор ни о чем.

*

antony2606

  • Давно я тут
  • 633
  • 46 / 4
  • Работаем!
ELLE кстати, большая часть не дает ссылок, т.к боится, что это будет воспринято как реклама\спам. Укажите в правилах, что ссылки с форума не индексируются...)
*

Dimjikk

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Суть в том, что при вводе либо самого адреса сайта, либо какого-либо поискового запроса, порой отображается ссылка на переход не туда, куда хочется, и описание соответственно.

например здесь  или здесь в качестве описания выводится кусок текста новости, в первом случае ссылка направляет на уже удаленную новость, во втором, естесственно, на главную, однако описание берет из одной из новостей главной страницы. Хочется, чтобы описание было единым. Возможно ли это? Спасибо.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Описание - это что?
Сниппет что ли? Тогда - нет, он подстраивается под запрос.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как найти и определить сервис раскрутки сайта?

Автор Gosha5767

Ответов: 0
Просмотров: 4971
Последний ответ 08.07.2025, 17:19:50
от Gosha5767
Как вывести в сниппете название статьи, а потом название сайта?

Автор gorbi_U

Ответов: 0
Просмотров: 1097
Последний ответ 18.01.2022, 18:29:22
от gorbi_U
Как изменить в поисковике на сайте имя домена?

Автор alex-morebook

Ответов: 2
Просмотров: 1121
Последний ответ 20.11.2021, 17:51:48
от Byzi
Яндекс не индексирует вообще картинки с сайта

Автор Девушка с веслом

Ответов: 6
Просмотров: 1252
Последний ответ 10.05.2021, 17:21:18
от xpank
Сервис или программа для оценки позиций сайта

Автор dron

Ответов: 12
Просмотров: 8272
Последний ответ 12.03.2021, 18:02:22
от v42bis