При доступе к компоненту com_users в Joomla 1.6 и 1.7 на внешнем интерфейсе приложение автоматически импортирует все плагины из группы «пользователь».Очевидно, что это очень полезно, если вы не хотите создавать компонент для простой передачи некоторых переменных плагину.
Хорошо.Давайте сделаем это проще:
- Пользователь получает ссылку для активации: http://example.com/index.php?option=com_users&task=edit&emailactivation=1&u=63&d077b8106=1 и щелкает по ней.
- Конечно, компонент пропустит emailactivation идругие параметры просто отображают «Редактировать форму профиля» (или форму входа для гостей).
- Затем JApplication импортирует все плагины из группы ' user ', что вызывает __constructors
По сути, с помощью плагина __ constructor можно настроить простое действие, подобное приведенному ниже:
class plgUserAccountactivation extends JPlugin
{
public function __construct(& $subject, $config)
{
parent::__construct($subject, $config);
if(isset($_GET['emailactivation'])) {
// check token
// activate account, email or whatever
// redirect with message
}
}
}
Вау!Это работает, нет необходимости создавать целый контроллер для выполнения одной простой задачи.
Но подождите минуту ...
- В опции изменения ссылки index.php?= com_users to index.php? option = com_user
- И давайте попробуем Joomla 1.5 ...
Эй, эй, ничего не происходит com_user вообще ничего не импортировал и __constructorЯ не хочу звонить.
Я очень обеспокоен этим в Joomla 1.5, и мне не хочется писать целый компонент.
Если у кого-нибудь есть какая-нибудь блестящая идея, пожалуйста, дайте мне знать.
Редактировать: Я решил свою проблему, отправив ссылку в следующей форме:
http: /example.com/index.php? Option = com_user & task = logout & emailactivation = 1 & u = 63 & d077b8106 = 1
Таким образом, пользовательские плагинывключены и __конструкторы выполняются.Но это настолько легкомысленно, что task = logout на самом деле не поощряет переход по ссылке.