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

KOPPEKTOP

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
При отправке сообщения через форму обратной связи стандартного компонента "Контакты" приходит письмо вида:

От кого: Иван Сидоров <postmaster@мойдомен.nichost.ru>
...
Кому: mail@мойдомен.ru
Это обращение было отправлено через раздел Контакты сайта http://www.мойдомен.ru/:
Иван Сидоров <адрес@егопочты>
...

Как и где исправить, чтобы в поле "От кого" был указан адрес e-mail из поля формы обратной связи - <адрес@егопочты>
или чтобы там вообще не указывалась никакая почта.
« Последнее редактирование: 04.08.2011, 14:22:20 от KOPPEKTOP »
*

KOPPEKTOP

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Как и где исправить, ...

   // Prepare email body
         $prefix = JText::sprintf('ENQUIRY_TEXT', JURI::base());
         $body    = $prefix."\r\n\r\n".$name.' <'.$email.'>'."\r\n\r\n".'Почтовый адрес: '.$pochta."\r\n\r\n".stripslashes($body);

         $mail = JFactory::getMailer();

         $mail->addRecipient( $contact->email_to );
         $mail->setSender( array( $name ) );  <----------- вот здесь исправить.
*

azx

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
  • Алексей
Если еще актуально. Это проблема nic.ru, а не Joomla. Скрипт отправки письма на хостинге выполняет эту подмену, видимо, в целях безопасности.
Для того чтобы в поле отправителя стоял тот ящик, что указал пользователь надо поднастроить хостинг:
В панели управления хостингом: Веб-сервер / Почта веб-сервера / В список "Исходящая - доверенные получатели" добавить всех получателей которым не нужно подменять адрес отправителя. Я сюда прописал все адреса электронной почты из контактов, благо их у меня не много.
Можно так же использовать список доверенных отправителей, короче, копать тут. :)

*

Olesea

  • Осваиваюсь на форуме
  • 20
  • 2 / 0
Если еще актуально. Это проблема nic.ru, а не Joomla. Скрипт отправки письма на хостинге выполняет эту подмену, видимо, в целях безопасности.
Для того чтобы в поле отправителя стоял тот ящик, что указал пользователь надо поднастроить хостинг:
В панели управления хостингом: Веб-сервер / Почта веб-сервера / В список "Исходящая - доверенные получатели" добавить всех получателей которым не нужно подменять адрес отправителя. Я сюда прописал все адреса электронной почты из контактов, благо их у меня не много.
Можно так же использовать список доверенных отправителей, короче, копать тут. :)


Спасибо, помогло! Адрес, указанный в Joomla добавить в список доверенных отправителей. )))
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Браузер меняет адрес админки на другой

Автор _Jim_Bradberry_

Ответов: 1
Просмотров: 1817
Последний ответ 27.03.2017, 15:06:16
от _Jim_Bradberry_
Обратная связь с отключенной почтовой службой на сервере - миф или реальность?

Автор Dealer

Ответов: 2
Просмотров: 1125
Последний ответ 13.03.2017, 15:38:10
от SeBun
Не могу найти где лежат раздел контакты в Joomla

Автор virusvvv

Ответов: 8
Просмотров: 3013
Последний ответ 12.01.2017, 12:50:55
от virusvvv
Joomla 1.5 изменила адрес релевантной страницы

Автор JohnGonzo

Ответов: 7
Просмотров: 1709
Последний ответ 22.10.2016, 14:50:24
от voland
Неправильный порядок отображения материала.

Автор SimPle

Ответов: 7
Просмотров: 2600
Последний ответ 07.06.2015, 16:05:37
от Uman