当访问前端joomla 1.6和1.7中的com_users组件时,应用程序会自动从“user”组导入所有插件。显然,如果不想创建一个组件来简单地将一些变量传递给插件,那么它是非常有用的。
好啊。让我们简化一下:
用户获得一个激活链接:http://example.com/index.php?option=com_users&task=edit&emailactivation=1&u=63&d077b8106=1并单击它。
当然,组件将省略emailactivation和其他参数,只显示“edit profile form”(或来宾登录表单)。
然后japplication从'user'组导入所有插件,这会触发构造函数
基本上,使用插件的构造函数,可以设置如下简单操作:

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
        }
    }
}

真的!它可以工作,不需要创建一个完整的控制器来处理一个简单的任务。
但是等一下…
在link change index.php中?option=com_用户到index.php?option=com_用户
让我们试试Joomla 1.5…
嘿,嘿,什么都没发生,COM用户根本没导入任何东西,而且构造函数也没调用。
我在joomla 1.5中对此非常困扰,我不想编写整个组件。
如果有人有什么好主意,请告诉我。
编辑:
我已通过以下形式发送链接解决了我的问题:
http:/example.com/index.php?option=com_user&task=logout&emailactivation=1&u=63&d077b8106=1
这样就包括了用户插件并执行了构造函数。但这是如此轻浮,因为task=logout并不真正鼓励单击链接。

最佳答案

1.5的问题是,事件更加有限。您可以使用以下事件:Joomla 1.5 Plugin Events - User。我想你的插件没有启动。
让它成为一个系统插件并检查url/request属性中的激活如何?类似于:

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
            }
        }
    }
 }
}

关于php - Joomla 1.5 com_user并导入用户插件,例如Joomla 1.6及更高版本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7236928/

10-12 00:29
查看更多