簡體   English   中英

在 Joomla 中成功注冊后將用戶重定向到自定義 URL

[英]Redirect user to custom URL after successful registration in Joomla

我希望我的用戶在成功注冊 Joomla 后重定向到自定義 URL。 我找不到任何選擇! 我怎樣才能做到這一點?

如果您使用 Joomla! 的內置菜單來加載注冊頁面,或者從登錄模塊到達那里,則無法重定向(這很奇怪,因為您可以在登錄模塊中登錄后設置重定向) .

最好的起點是查看Joomla的“ 身份驗證”部分中的現有解決方案! 擴展目錄 似乎列出了幾個既支持舊的 1.5 樣式站點又支持新的 1.7/2.5 站點的列表。

(順便說一句,如果您仍在使用 1.7,您應該更新到最新的 2.5,因為 1.7 行中存在嚴重的安全問題。)

在您的代碼集中執行以下操作;

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

您可以使用插件來實現這一點(至少在 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');
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM