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

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Есть сайт, который оказывает услуги через интернет. Основные клиенты в Москве и Спб, остальные в крупных городах РФ. Офис находится в Краснодаре.
В панелях вебмастера регион стоит Россия.
Есть желание улучшить коммерческие факторы и указать адрес организации для поисковиков. Однако есть опасения, что указав краснодарский адрес, улучшим позиции по Краснодару, а ухудшим по Москве и Питеру.
Что сделать?
1) Указать Краснодарский адрес.
2) Арендовать почтовый адрес в Москве.
3) Ничего не трогать, чтобы не испортить.
4) Свой вариант
*

creative3d

  • Захожу иногда
  • 189
  • 6 / 0
указав краснодарский адрес, улучшим позиции по Краснодару, а ухудшим по Москве и Питеру
Такое вполне возможно, поэтому думайте...
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Как вариант сделать автоопределение города посетителя (и дополнительную плашку "ваш город Москва или выберите другой") и в зависимости от этого менять координаты. Сохранять в куку и сразу выдавать нужные данные при загрузке страницы.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

creative3d

  • Захожу иногда
  • 189
  • 6 / 0
Если Яндекс вебмастер расценивать поддомен как отдельный сайт, то можно сделать краснодарский поддомен, а обычный домен останется российским, таким образом ничего не ухудшится, а судьба поддомена будет в ваших руках. yes!
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
а зачем делать поддомены? Определение региона и вывод контактов прекрасно будет работать в пределах одного домена
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

creative3d

  • Захожу иногда
  • 189
  • 6 / 0
вывод контактов
Да я думаю в оригинале вопроса была немного другая тема затронута, вывод контактов-то сделать можно, только вот на выдачу в поисковых системах это не повлияет, по-прежнему будет лучше ранжироваться либо по всей России, либо по конкретному региону...
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
только вот на выдачу в поисковых системах это не повлияет, по-прежнему будет лучше ранжироваться либо по всей России, либо по конкретному региону...
Точно, про это что-то не подумал (всегда в первую очередь технические моменты в голове :))
Ну тогда получается никак, либо делать поддомены на каждый регион и каждый отдельно раскручивать....
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Цитировать
Свой вариант

Пока не трогать ничего. Сделать анализ, как работают аналогичные сайты. Может просто сделать окно - укажите свой регион. Выше сказано.

Цитировать
либо делать поддомены на каждый регион и каждый отдельно раскручивать

Очень хороший совет. Почему бы не сделать поддомены для каждого населенного пункта. Если я вижу в URL после подтверждения места krasnodar.mysite.ru это что-то значит?

Цитировать
Арендовать почтовый адрес в Москве

Непонятно о чем речь. Если, к примеру, реально мой офис в Краснодаре, то почему я должен это скрывать? Не факт, что ПС выдаст ближайшее, если у меня лучше сайт соответствует запросу из Москвы.

PS. На мой взгляд - забить на это дело.


« Последнее редактирование: 05.02.2018, 04:20:41 от capricorn »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Какой домен лучше выбрать для нового интернет-магазина: com или com.ua?

Автор Anton shop

Ответов: 10
Просмотров: 1922
Последний ответ 22.11.2021, 22:24:10
от wishlight
Какой url товара лучше с категорией или без?

Автор fominmen25

Ответов: 3
Просмотров: 1260
Последний ответ 30.12.2017, 15:35:49
от Sambiz2
Имеет смысл создавать по сайту на каждый регион?

Автор dm-krv

Ответов: 7
Просмотров: 1221
Последний ответ 06.11.2017, 12:39:49
от si@m
SSL сертификат, какой выбрать?

Автор Mehanick

Ответов: 34
Просмотров: 3248
Последний ответ 29.09.2017, 21:49:12
от Septdir
Ограничить доступ к сайту для гостей, но не для поисковых систем

Автор slepoy

Ответов: 1
Просмотров: 1061
Последний ответ 30.11.2016, 08:38:46
от Mihas_01