0

Magento のインストールでは、すべてのユーザーに必要ないため、「メールの確認が必要」機能を無効にしました。ただし、特定のドメイン「foo.com」のユーザーに、この確認メールを実際に受信してもらいたいと考えています。

メールで送信されたリンクでメールアドレスを確認したら、特定のグループに追加したいと思います。

このタイプの Magento の変更をどこから始めるべきかについて、誰かが私に指示を与えることができますか? どうもありがとうございました!

4

1 に答える 1

1

拡張またはオーバーライドできます

app/code/core/Mage/Customer/controllers/AccountController.php

public function createPostAction()
{
    if (true === $validationResult) {
        $customer->save();

        // Do your custom Code here to match the domains you want to make Confirmation Required for them.
        $patterns = array('@foo.com','@boo.com','@bar.com');
        $patterns_flattened = implode('|', $patterns);
        if ( preg_match('/'. $patterns_flattened .'/i', $customer->getEmail(), $matches) )
        {  
            $customer->setIsConfirmationRequired(true);
        }

       if ($customer->isConfirmationRequired()) {
            $customer->sendNewAccountEmail('confirmation', $this->_getSession()->getBeforeAuthUrl());
            $this->_getSession()->addSuccess($this->__('Account confirmation is required. Please, check your e-mail for confirmation link. To resend confirmation email please <a href="%s">click here</a>.',
                Mage::helper('customer')->getEmailConfirmationUrl($customer->getEmail())
           ));
            $this->_redirectSuccess(Mage::getUrl('*/*/index', array('_secure'=>true)));
            return;
        }
        else {
            $this->_getSession()->setCustomerAsLoggedIn($customer);
            $url = $this->_welcomeCustomer($customer);
            $this->_redirectSuccess($url);
            return;

        }
    }
}

だからあなたは両方の方法でそれを行うことができます

アクティベーション電子メールを有効$customer->setIsConfirmationRequired(false);にし、電子メールが検証するドメインと一致しなかった場合に設定します (推奨)

アクティベーション電子メールを無効$customer->setIsConfirmationRequired(true);にし、電子メールが検証するドメインと一致するかどうかを設定します

ありがとう

于 2012-09-09T00:00:46.660 に答える