当在前端访问 Joomla 1.6 和 1.7 中的 com_users 组件时,应用程序会自动导入“user”组中的所有插件。显然,如果不想创建一个组件来简单地将一些变量传递给插件,那么它非常有用。
好的。让我们把它变得更简单:
- 用户获得激活链接:并点击它。
- 当然该组件会省略电子邮件激活和其他参数只是显示“编辑个人资料表格”(或客人的登录表格)。
- 然后 JApplication 从 ' 导入所有插件user' 组,触发 __constructors
基本上,用插件__构造函数人们可以设置像下面这样的简单操作:
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?option=com_users更改为index.php?option=com_user
- 让我们尝试一下 Joomla 1.5...
嘿,嘿,什么也没发生 com_user 根本没有导入任何东西,并且 __constructor 也没有被调用。
我在 Joomla 1.5 中对此感到非常困扰,并且我不想编写整个组件。
如果有人有什么好主意,请告诉我。
Edit:我通过以下形式发送链接解决了我的问题:
http://example.com/index.php?option=com_user&任务=注销&emailactivation=1&u=63&d077b8106=1
这样就包含了用户插件并执行了 __constructors。但这是如此轻率任务=注销并不真正鼓励点击链接。
1.5 的问题是,事件更加有限。您可以参加以下活动:Joomla 1.5 插件事件 - 用户 http://docs.joomla.org/Plugin_events/User。我想因此你的插件没有启动。
如何将其设为系统插件并检查 URL/请求属性中的激活情况?就像是:
class plgSystemUseractiavation extends JPlugin {
function onAfterInitialise(){
$u = &JURI::getInstance();
$option = trim(strtolower($u->getVar('option')));
$emailactivation = trim(strtolower($u->getVar('emailactivation')));
if( strlen($option < 1) ){ // for SEF...
$option = trim(strtolower(JRequest::getString('option')));
}
$app =& JFactory::getApplication();
$appName = trim(strtolower($app->getName()));
if( $appName === 'site' ){
if( ( $option === 'com_users' ) || ( $option === 'com_user' ) ){
if( $emailactivation === '1' ){
// check token
// activate account, email or whatever
// redirect with message
}
}
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)