在前端访问Joomla1.6和1.7中的com_users组件时,应用程序会自动从'user‘组导入所有插件。显然,如果不想创建一个组件来简单地将一些变量传递给一个插件,这是非常有用的。
好的。让我们简单一点:
基本上,使用插件的__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
}
}
}哇!它可以工作,不需要创建一个完整的控制器来处理一个简单的任务。
但等一下..。
嘿,嘿,什么事都没有发生,com_user根本没有导入任何东西,__constructor wan也没有调用。
在Joomla1.5中,我对此感到非常困扰,我不想编写完整的组件。
如果有人有什么好主意,请告诉我。
编辑:我通过发送以下形式的链接解决了我的问题:
http:/example.com/index.php?option=com_user&task=logout&emailactivation=1&u=63&d077b8106=1
这样就包含了用户插件并执行了__constructors。但这太轻浮了,因为task=logout并没有真正鼓励点击链接。
发布于 2011-08-30 12:18:35
1.5的问题是,事件是有限的。您可以使用下列事件:Joomla 1.5插件事件-用户。因此,我想你的插件还没有启动。
让它成为一个系统插件并检查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
}
}
}
}
}https://stackoverflow.com/questions/7236928
复制相似问题