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

Irishstyle

  • Захожу иногда
  • 77
  • 0 / 0
Добрый день. Есть шаблон от yootheme (лицензионный). В нем уже есть страница с формой обратной, она полностью меня устраивает, но при отправке сообщений из нее ничего никуда не приходит. Куда копать кто знает?
Код
<div class="uk-margin-left uk-margin-right">
<h2 class="uk-h1">Свяжитесь с нами</h2>
<p>Если у Вас есть какие либо вопросы, вы можете написать нам</p>
<form class="uk-form">
<div class="uk-grid uk-grid-small uk-grid-width-medium-1-2" data-uk-grid-margin="">
<div><input class="uk-form-large uk-width-1-1" type="text" placeholder="Имя" /></div>
<div><input class="uk-form-large uk-width-1-1" type="email" placeholder="E-mail" /></div>
</div>
<textarea class="uk-margin-top uk-width-1-1" rows="8" placeholder="Ваше сообщение"></textarea> <button class="uk-button uk-button-large uk-button-primary uk-margin-top">Отправить</button></form></div>
*

Gosha5767

  • Захожу иногда
  • 487
  • 27 / 0
« Последнее редактирование: 23.09.2018, 00:17:01 от Gosha5767 »
Чистка сайта от дублей в Яндекс и Google.
Миграция Joomla 1.5 до Joomla 3.хх
Доработка сайта
*

Irishstyle

  • Захожу иногда
  • 77
  • 0 / 0
Посмотрите http://sitedelkin.ru/zapisnaya-knizhka-vebmastera-reshenie-i-ustranenie-problem/376-ne-otpravlyaetsya-pochta-s-sajta.html
Забыл сказать: тестовое письмо из под Joomla отправляется и приходит на указанную почту в разделе Система>Общие настройки>Сервер>Настройки почты
*

Gosha5767

  • Захожу иногда
  • 487
  • 27 / 0
Посмотрите и проверьте в форме файл отправки писем  mail.php.
Или попробуйте метод отправки писем через почтовый ящик хостинга.
Чистка сайта от дублей в Яндекс и Google.
Миграция Joomla 1.5 до Joomla 3.хх
Доработка сайта
*

arma

  • Завсегдатай
  • 1752
  • 81 / 3
Вопрос есть ли он там. Обычно в шаблонах просто болванка формы.
*

Irishstyle

  • Захожу иногда
  • 77
  • 0 / 0
Посмотрите и проверьте в форме файл отправки писем  mail.php.
Не совсем понял где это посмотреть.
Или попробуйте метод отправки писем через почтовый ящик хостинга.
Настроил отправку через smtp - не помогло.
*

Irishstyle

  • Захожу иногда
  • 77
  • 0 / 0
Вопрос есть ли он там. Обычно в шаблонах просто болванка формы.
Очень возможно. А вот как из болванки сделать рабочую форму, вы случайно не знаете?
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
У вас форма скриптом отправляется. Посмотрите, нет ли ошибки в скриптах.
Создание сайтов, шаблонов, помощь в решении проблем.
*

Gosha5767

  • Захожу иногда
  • 487
  • 27 / 0
Настроил отправку через smtp - не помогло.

На хостинге есть почтовые ящики. Нужно создать в панели управления хостингом почтовый ящик (домен@mail.ru ).
Там указать в пункте "Слать копии писем на e-mail"  - свой e-mail (свойадрес@mail.ru ).
А на сайте в форме отправка почты поставить (домен@mail.ru ).
Таким образом будет осуществляться отправка почты посредством хостинга.
Чистка сайта от дублей в Яндекс и Google.
Миграция Joomla 1.5 до Joomla 3.хх
Доработка сайта
*

Irishstyle

  • Захожу иногда
  • 77
  • 0 / 0
А на сайте в форме отправка почты поставить (домен@mail.ru ).
В самой форме не указан ящик на который будет падать сообщение, я же привел код формы в первом сообщении. Или вы про какую-то другую форму?
*

Gosha5767

  • Захожу иногда
  • 487
  • 27 / 0
В самой форме не указан ящик на который будет падать сообщение, я же привел код формы в первом сообщении. Или вы про какую-то другую форму?

Ну где-то должен быть указан ваш почтовый ящик куда должны приходить письма. Вот нужно найти и туда поставить
Чистка сайта от дублей в Яндекс и Google.
Миграция Joomla 1.5 до Joomla 3.хх
Доработка сайта
*

Irishstyle

  • Захожу иногда
  • 77
  • 0 / 0
Ну где-то должен быть указан ваш почтовый ящик куда должны приходить письма. Вот нужно найти и туда поставить
Я полагал что он ссылается на ящик который указан в настройках системы Joomla.
*

Gosha5767

  • Захожу иногда
  • 487
  • 27 / 0
Попробуйте  метод приведенный мной с почтовым ящиком на хостинге.
А потом укажите в настройках системы Joomla. И опробуйте отправку.
Чистка сайта от дублей в Яндекс и Google.
Миграция Joomla 1.5 до Joomla 3.хх
Доработка сайта
*

Irishstyle

  • Захожу иногда
  • 77
  • 0 / 0
Попробуйте  метод приведенный мной с почтовым ящиком на хостинге.
Для этого сначала нужно узнать где меняется ящик для формы:
А на сайте в форме отправка почты поставить (домен@mail.ru ).
*

Gosha5767

  • Захожу иногда
  • 487
  • 27 / 0
Свяжитесь с поддержкой хостинга, бывает что они блокируют отправку писем с сайта, заносят в blaclist почтовые адреса.
Чистка сайта от дублей в Яндекс и Google.
Миграция Joomla 1.5 до Joomla 3.хх
Доработка сайта
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Получение полей формы регистрации в своём модуле

Автор vanguger

Ответов: 1
Просмотров: 2447
Последний ответ 24.05.2023, 19:04:29
от vanguger
Форма обратной связи для SP Page Builder и Joomla 4

Автор AlexP750

Ответов: 3
Просмотров: 2900
Последний ответ 28.12.2021, 19:23:53
от AlexP750
SP Page Builder Pro проблема с плагином обратной связи

Автор abisa

Ответов: 3
Просмотров: 1410
Последний ответ 01.12.2020, 10:24:11
от AlexB
AcyMailing вместо отправки письма открывает страницу с GitHub

Автор Podryvnik

Ответов: 8
Просмотров: 1492
Последний ответ 23.06.2020, 13:20:56
от Podryvnik
Не приходят письма из AcyMailing Enterprise 6.1.2

Автор Orfei

Ответов: 2
Просмотров: 1434
Последний ответ 20.08.2019, 18:49:27
от nia