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

Shverep

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Сайт работает на Joomla 1.5.15, использую для авторизации и регистрации пользователей стандартный компонент com_user и модуль mod_login.
Но как я поняла, в них нет возможности запросить повторную активацию на электронный ящик. И получается очень неудобно: если человек ввел свои данные для регистрации, то ему высылается письмо со ссылкой для активации. Но может случиться такое, что человек, например, пропустил письмо или случайно удалил его. И тогда он больше не сможет активировать свой аккаунт. Если же он будет пытаться регистрироваться повторно с указанием своего электронного ящика, то ему будет выдаваться сообщение:
Цитировать
"Такой e-mail уже зарегистрирован. Если Вы забыли пароль, нажмите на Забыли пароль и Вам будет выслан новый пароль."
Если же человек нажмет на "Забыли пароль" и введет адрес своего электронного ящика, то ему будет выдаваться сообщение:
Цитировать
"Сбой запроса сброса пароля по причине: пользователь с указанным именем и e-mail адресом не найден.."
Получается замкнутый круг - зарегистрироваться на данный электронный ящик нельзя, т.к. такой e-mail уже зарегистрирован и пароль сбросить нельзя, потому что пользователь с таким e-mail не существует.
Как можно решить данную задачу?
Можно ли сделать так, чтобы в данном случае (если пользователь пытается зарегистрироваться, но активация с прошлой попытки активации не была пройдена) сообщать пользователю о том, что с его адреса уже регистрировались, но не активировались и предлагать ему заново выслать код активации или заново зарегистрироваться и пройти все стадии регистрации?
 
*

Dr_ceferov

  • Осваиваюсь на форуме
  • 44
  • 0 / 1
reshili problemu uje?
*

Shverep

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Нашла следующий плагин:
http://extensions.joomla.org/extensions/communities-a-groupware/user-management/6784
"Blocked Users Reactivate Plugin"
This plug-in has two features.
1. It re-sends activation letter to non-activated user again after some period after registration.
2. If after re-sending activation letter and user will have not activated Plug-in will delete user. This plug-in is triggered what a Super Administrator log in to site from Front-End.

Воспользовалась им  ^-^
*

Dr_ceferov

  • Осваиваюсь на форуме
  • 44
  • 0 / 1
sps xoroshiy modul/+vam///tolkou menyaa cheto voobshe ne otpravlyaet pismo aktivacii
*

Shverep

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
А в админке "Сайт - Настройки - Система"
"Активация новых учетных записей" - "да" - стоит?
Если да, то, возможно, ваш сайт находится пока на локальном компьютере и на нем не настроен почтовый сервер.
Если же сайт в интернете, возможно, письма об активации уходят, но попадают у получателей в папку со спамом.
Есть много вариантов - почему могут не приходить письма об активации.
*

Dr_ceferov

  • Осваиваюсь на форуме
  • 44
  • 0 / 1
сайт в интернете...в админке стоит - да . икуда не попадаетюя проверил
*

Shverep

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
а какое-нибудь сообщение после регистрации выводится?
*

Dr_ceferov

  • Осваиваюсь на форуме
  • 44
  • 0 / 1
da vot nichego ne vivoditsya...  :(  a v polzovateli popadaet ...
*

Dr_ceferov

  • Осваиваюсь на форуме
  • 44
  • 0 / 1
ya tolko aktiviroval mod_login...  a com_user shtoto doljen delat? i esli da to kak?
*

Shverep

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
поставьте в любое место шаблона: <jdoc:include type="message" />
и посмотрите после регистрации какое сообщение в то место шаблона выводится
есть ли сообщение о том, что на указанный почтовый ящик отправлено письмо со ссылкой для активации?
*

Dr_ceferov

  • Осваиваюсь на форуме
  • 44
  • 0 / 1
поставьте в любое место шаблона: <jdoc:include type="message" />
и посмотрите после регистрации какое сообщение в то место шаблона выводится
есть ли сообщение о том, что на указанный почтовый ящик отправлено письмо со ссылкой для активации?




ok shas/// vot sayt : inshops.az /// registraciya v samom vnizu
*

Dr_ceferov

  • Осваиваюсь на форуме
  • 44
  • 0 / 1
PHPMAILER_RECIPIENTS_FAILEDaaarrr@aa.aa
PHPMAILER_RECIPIENTS_FAILEDdr_ceferov@mail.ru

vot shto vivodil
*

Shverep

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Ну вот, теперь хоть видно по какой ошибке не приходят письма об активации.
Конкретно я ничего не могу сказать - не сталкивалась с подобным.
Но, я думаю, гугль вам поможет. Ищите по выдаваемой ошибке: "PHPMAILER_RECIPIENTS_FAILED"
*

Dr_ceferov

  • Осваиваюсь на форуме
  • 44
  • 0 / 1
Ну вот, теперь хоть видно по какой ошибке не приходят письма об активации.
Конкретно я ничего не могу сказать - не сталкивалась с подобным.
Но, я думаю, гугль вам поможет. Ищите по выдаваемой ошибке: "PHPMAILER_RECIPIENTS_FAILED"

da spasibo vam bolshoe...  da uj ishu uje...mnogie stalkivalis s etim...no resheniy poka ne nashel... u vas massovaya rassilka cherez adminku rabotaet?
*

Shverep

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Dr_ceferov, рассылка работает через feedburner.com. По сути - это обновления рсс, которые приходят на почту.
Но это уже вопрос по другой теме. А на форуме правило: один вопрос - одна тема
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

письмо об подтверждении активации

Автор radiant

Ответов: 4
Просмотров: 2169
Последний ответ 09.12.2015, 09:45:32
от capricorn
Письма не отправляються с сайта

Автор mxxx

Ответов: 11
Просмотров: 2013
Последний ответ 01.03.2013, 08:24:18
от mxxx
Повторная отправка письма с активацией

Автор eragon

Ответов: 1
Просмотров: 1285
Последний ответ 29.04.2012, 00:08:38
от terr
ЗАКРЫТО! Перестала работать отправка почты

Автор valensy

Ответов: 1
Просмотров: 1652
Последний ответ 17.04.2012, 11:39:06
от valensy
автологин при активации

Автор EndErr

Ответов: 2
Просмотров: 1692
Последний ответ 27.03.2012, 17:14:32
от EndErr