在Joomla中成功注册后,将用户重定向到自定义URL

时间:2012-05-06 17:28:23

标签: php joomla joomla1.5 joomla1.7

我希望我的用户在成功注册Joomla后重定向到自定义URL。 我找不到任何选择! 我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:0)

如果您使用Joomla!的内置菜单加载注册页面,或者从登录模块到达那里,则无法重定向(这很奇怪,因为您可以在登录后设置重定向登录模块)。

最好的起点是查看Authentication的“Joomla! Extension Directory”部分中的现有解决方案。看来有几个列出了支持旧1.5风格的网站和新的1.7 / 2.5网站。

(顺便说一句,如果你仍然在1.7,你应该更新到最新的2.5,因为1.7行存在严重的安全问题。)

答案 1 :(得分:0)

在您的代码集中执行以下操作;

$app=JFactory::getapplication();
$app->redirect('index.php?option=com_users&view=login'));

答案 2 :(得分:0)

你可以通过一个插件来实现这一点(至少在Joomla 3.x中 - 不确定这将在多远的时候起作用)。这里的关键是onUserAfterSave事件,它告诉您用户是新用户还是现有用户。

我之前写过下面的代码,所以无法回想起在onUserAfterSave事件处理程序中无法完成重定向的确切原因,但我认为重定向随后会在核心Joomla用户管理代码的其他地方被覆盖。你试着从那里开始,因此在会话中保存一个标志并在以后的事件处理程序中检查它。

class PlgUserSignupRedirect extends JPlugin
{
    public function onUserAfterSave($user, $isnew, $success, $msg)
    {
        $app = JFactory::getApplication();

        // If the user isn't new we don't act
        if (!$isnew) {
            return false;
        }

        $session = JFactory::getSession();
        $session->set('signupRedirect', 1);

        return true;
    }

    function onAfterRender() {
        $session = JFactory::getSession();
        if ($session->get('signupRedirect')) {
            JFactory::getApplication()->redirect('/my-post-signup-url');
            $session->clear('signupRedirect');
        }
    }
}