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

Kosiak

  • Захожу иногда
  • 76
  • 1 / 0
  • Рулевой
Склейка www и не-www доменов
« : 15.01.2009, 01:20:27 »
Хочу склеить два домена по методу:

Код
# Redirect www urls to non-www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com [NC]
RewriteRule (.*) http://yoursite.com/$1 [R=301,L]

Но т.к. в Joomla .htaccess уже используется для SEF вместе RewriteEngine on
хотел спросить, как правильно разместить эти инструкции? Просто запихнуть в конец файла или как-то иначе?
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Re: Склейка www и не-www доменов
« Ответ #1 : 15.01.2009, 11:10:38 »
вставлять надо перед сеф-обработчиками, т.к. сперва запрос должен прийти на нужный вам адрес, а после уже делать его обработку
и использовать один RewriteEngine on
*

Kosiak

  • Захожу иногда
  • 76
  • 1 / 0
  • Рулевой
Re: Склейка www и не-www доменов
« Ответ #2 : 15.01.2009, 21:04:54 »
Да, всё отлично работает!
*

Kosiak

  • Захожу иногда
  • 76
  • 1 / 0
  • Рулевой
Re: Склейка www и не-www доменов
« Ответ #3 : 16.01.2009, 11:09:59 »
Напишу сюда, т.к. тоже по сути про www и не-www домены.
Сейчас, после склейки заголовки от сервера такие:
Для www:
Код
HTTP/1.1 301 Moved Permanently
Date: Fri, 16 Jan 2009 08:02:31 GMT
Server: Apache/2.2.10 (Unix) mod_ssl/2.2.10 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
Location: http://mysite.ru/
Content-Length: 414
Connection: close
Content-Type: text/html; charset=iso-8859-1

и для не-www:
Код
HTTP/1.1 200 OK
Date: Fri, 16 Jan 2009 08:00:33 GMT
Server: Apache/2.2.10 (Unix) mod_ssl/2.2.10 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.8
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Expires: Mon, 1 Jan 2001 00:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: 006e4d665441766caa63324dac4b8eb1=8f59c3acc70dad28cad06ae556031da5; path=/
Last-Modified: Fri, 16 Jan 2009 08:00:34 GMT
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
Подскажите, почему такая разница, и почему у них даже кодировки разные?
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Re: Склейка www и не-www доменов
« Ответ #4 : 21.01.2009, 18:11:01 »
проще у своего хостера спросить
т.к. в принципе есть разделение доменов на www и без оных.
если тебе так это принципиально, то спрашивай хостера.
Еще вариант может быть - в панели управления хостингом, могут быть разные заданы параметры для сайта с www и без него, хотя я не встречал еще такой панели.

если твой хостинг поддерживает изменение парметров апача через htaccess, то для своих этих двух доменов проставь параметры кодировки и посмотри что они выдадут
*

Kosiak

  • Захожу иногда
  • 76
  • 1 / 0
  • Рулевой
Re: Склейка www и не-www доменов
« Ответ #5 : 21.01.2009, 20:01:37 »
cpanel
сайта с www у меня вообще нет, так что .htaccess кидать некуда.

Мне просто интересно знать - это смертельно? понизит выдачу у поисковиков или нет?

Re: Склейка www и не-www доменов
« Ответ #6 : 15.06.2009, 17:06:43 »
 ^-^разобрался
« Последнее редактирование: 18.06.2009, 02:45:00 от Cyrax »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Склейка с главной

Автор otec1klas

Ответов: 2
Просмотров: 1305
Последний ответ 08.07.2013, 12:13:09
от aspidy
Проблемы при склейки доменов

Автор Дмитрий Миллер

Ответов: 2
Просмотров: 1299
Последний ответ 08.03.2012, 23:13:39
от Дмитрий Миллер
Редирект (перенаправление) без склейки доменов

Автор splint

Ответов: 1
Просмотров: 1200
Последний ответ 10.12.2011, 19:49:59
от KosmiC
Можно ли использовать одну базу данных для нескольких доменов

Автор akb33

Ответов: 1
Просмотров: 2234
Последний ответ 28.01.2011, 20:23:31
от yuri-design
несколько доменов разного уровня в одной Joomla

Автор cheeter

Ответов: 4
Просмотров: 1652
Последний ответ 23.01.2011, 21:33:23
от cheeter