1

私はジョムソーシャルに取り組んでいます。登録ページをjomsocial登録にリダイレクトするための「Redirect Registration for JomSocial」プラグインをインストールしました。登録ページを取得していますが、登録の最初のステップが完了すると、ページはログインページにリダイレクトされ、「最初にログインしてください」というメッセージが表示されます。

これは、jomsocial のインストール中に作成されるメニュー「Jomsocial」を無効にした場合にのみ発生します。

登録ページを jomsocial 登録にリダイレクトする他の方法はありますか。

4

2 に答える 2

0

それらを表示したくない場合は、jomsocial メニュー項目を無効にすることはできません。モジュールを作成しない新しいメニューにそれらを配置するだけです (または、モジュールを作成し、それをどの位置にも割り当てません) . これが現在失敗している理由です。これを必要とする関数は、リダイレクト プラグインの getMenuItem() です。

次にわかることは、ログインが必要なリンクをクリックした訪問者は、ログイン後に戻るはずのエンコードされた URL を含む &return パラメーターを使用してログイン ページに送信されることです。これは jomsocial プラグインでは処理されません。変更は次のようになります。

ファイル plugins/system/jomsocialredirect/jomsocialredirect.php

/**
 * Method to override Login / Logout redirect
 */
private function overrideRedirectLoginLogout() {

    $mainframe  =&  JFactory::getApplication();

    $task = JRequest::getVar ( 'task' );
    switch ($task) {
        case 'user.login' : //Joomla 1.6 and later
        case 'login' : /* on logging */
            /** 
             * krz This next line restores working status of login redirects.
             * (the purpose of jomsocialredirect plugin is to redirect after login, but some links for guests
             * point to com_login with a return url set; if this is the case, the next line makes the feature work,
             * otherwise it would be overridden;
             * note: redirect is to be avoided on logout.
             */
            if (JRequest::getVar('return','')!='') return;

            if ($this->login ()) { /* we do login by self */
                /* redirect if login success */
                $link = $this->getMenuLink ( $this->pluginParams->get ( 'redirect_login', 1 ) );
                $mainframe->redirect ( $link, JText::_ ( $this->pluginParams->get ( 'redirect_login_msg', 'LOGIN_SUCCESSFUL' ) ), 'message' );
            } else {
                /* redirect if login failed */
                $link = $this->getMenuLink ( $this->pluginParams->get ( 'redirect_login_failed', 1 ) );
                $mainframe->redirect ( $link, JText::_ ( $this->pluginParams->get ( 'redirect_login_failed_msg', 'LOGIN_FAILED' ) ), 'notice' );
            }
            break;
        case 'user.logout' : //Joomla 1.6 and later
        case 'logout' :
            $link = $this->getMenuLink ( $this->pluginParams->get ( 'redirect_logout', 1 ) );
            JFactory::getApplication ()->logout ();
            $mainframe->redirect ( $link, JText::_ ( $this->pluginParams->get ( 'redirect_logout_msg', 'YOU_HAVE_LOGGED_OUT' ) ), 'message' );
            break;

        default :
            /* override redirect after login / logout */
            $view = JRequest::getVar('view','');
            if ($view=='profile') {
                $link = $this->getMenuLink ( $this->pluginParams->get ( 'redirect_login', 1 ) );
                $mainframe->redirect ( $link);
            }

            break;
    }
}
于 2013-01-30T08:44:34.283 に答える