在前端访问Joomla 1.6和1.7中的com_users组件时,应用程序会自动从'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
}
}
}
哇!它可以工作,没有必要创建一个完整的控制器来处理一个简单的任务。
但是等一下......
嘿,嘿,没有任何反应com_user根本没有导入任何东西而__constructor也没有被调用。
我对Joomla 1.5感到非常困扰,我不想写整个组件。
如果有人有一些好主意,请告诉我。
修改 我通过以下列形式发送链接解决了我的问题:
HTTP:/example.com/index.php选项= com_user&安培;的任务=注销&安培; emailactivation = 1&安培; U = 63&安培; d077b8106 = 1
这样就包含了用户插件,并执行了__constructors。但这太无聊了,因为 task = logout 并不真的鼓励点击链接。
答案 0 :(得分:1)
1.5的问题是,事件更有限。您可以使用以下活动:Joomla 1.5 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
}
}
}
}
}